数组的处理

95 阅读1分钟
  • 根据数组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]