关于数组对象的筛选
1、数组转为数组对象
['banana', 'apple', 'orange'] 转换为
[{url:'banana'},{url:'apple'},{url:'orange'}]
var fruits = ['banana', 'apple', 'orange'];
const newarr = fruits.map(item => ({ url: item }))
console.log(newarr)
2、数组对象对象去重
[{a:1},{b:2},{a:1}]
let arr1 = [
{id: 1, value:'a'},
{id: 2, value:'b'},
{id: 1, value:'a'},
{id: 3, value:'c'}
]
let obj = {}
let res = arr1.reduce((prev, cur) => {
obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur)
return prev
},[])
console.log(res )
3.解析出对象数组中的英文字母
const arrs = [{a:1,b:'A'}, {a:2,b:'B'},{a:3,b:'C'}, {b:'D'},{a:5,b:'E'}]
const logs = arrs.filter((item)=>{
if(item?.a) {
return item.a;
}
}).map((item)=>{
if(item?.b) {
return item.b;
}
});
console.log(logs) ['A','B','C','D']
4、将对象中的键值作为键名组成新的数组对象
var fruits = [
{
name:'banana',
value:1
},
{
name:'apple',
value:2
},
]
const res = fruits.map(item => {
const object = {};
object[item.name] = item.value
return object
})
console.log(res) //[ { banban:1}, { apple:2} ];
4、 数组变成数组对象
let record = [
[
{'name':'Amy'},
{'age':12},
{'sex':'girl'}
],
[
{'name':'Tom'},
{'age':13},
{'sex':'boy'}
],
]
// 转换为
let newRecord = [
{
'name':'Amy',
'age':12,
'sex':'girl'
},
{
'name':'Tom',
'age':13,
'sex':'boy',
}
]
newRecord = record.map(item=>{
let obj = {};
item.forEach(i=>{
obj = {...obj,...i}
})
return obj;
})
console.log(newRecord)
5、数组对象中的键值放入数组中
let tt = [
{name: 'scene1', number: 1},
{name: 'scene2', number: 5},
{name: 'scene1', number: 2},
{name: 'scene2', number: 6},
{name: 'scene1', number: 3},
{name: 'scene2', number: 3},
];
const obj = {};
tt.forEach(item => {
if (!obj[item.name]) {
obj[item.name] = [item.number]
} else {
obj[item.name].push(item.number)
}
})
const vv = Object.keys(obj).map(key => {
return {
name: key,
number: obj[key]
}
})
console.log('vv', vv)
// [
{name: 'scene1', number: [1,2,3]},
{name: 'scene2', number:[5,6,3]}
]
\