- 根据数组a的值,从数组b中查找,返回一个新键值对的数组。
const a = ['aa', 'bb', 'cc', 'dd', 'ee'];
const b = [
{name: 'aa', id: 1 },
{name: 'bb', id: 2 },
{name: 'ee', id: 3 },
];
//求数组c,如果b中有a中的值,返回,没有,id返回null
方案1:
const objName = {}
b.forEach(item => objName[item.name] = item.id)
// objName {aa: 1, bb: 2, ee: 3}
const c = a.map(item => ({
name: item,
id: objName[item] || null
}))
// c [{name: 'aa', id: 1 },{name: 'bb', id: 2 },{name: 'cc', id: null}, {name: 'dd', id: null},{name: 'ee', id: 3}];
方案2:影响性能
const c = a.map(item => {
var id = null;
b.forEach(bItem => {
if(item === bItem.name) {id = bItem.id}
})
return ({name: item , id})
});
你更喜欢哪种方案呢? 推荐方案1
- 复制数组
const a = [1,2,3];
const a1 = [...a]; || const [...a1] = a;
- 合并数组
const arr1 = [1,2,3];
const arr2 = [4,5,6];
const arr3 = [7,8,9];
const arr = [...arr1,...arr2,...arr3];
// arr [1,2,3,4,5,6,7,8,9]
- 数组去重
const a = [1,2,3,4,4,4,2,2,2,1];
[...new Set(a)]
// [1,2,3,4]
- 数组中添加元素
const b = [2,3,4];
[...b, 6,7,8]
// [2,3,4,6,7,8]