js 一维数组对象(根据对象某个值) 转 二维数组对象

2020-10-14  本文已影响0人  Yyyyyyyyyujie
//要求:
var arr = [{ a: 1 }, { a: 1 }, { a: 2 }, { a: 3 }, { a: 3 }, { a: 4 }, { a: 2 }]
//输出结果 [[{ a: 1 }, { a: 1 }],[{ a: 2 }, { a: 2 }],[{ a: 3 }, { a: 3 }],[{ a: 4 }]]

  var arr = [{ a: 1 }, { a: 1 }, { a: 2 }, { a: 3 }, { a: 3 }, { a: 4 }, { a: 2 }]
  var result = []
  //先去重 然后 取值
  new Promise((resolve, reject) => {
    let newArr = screen(arr);
    resolve(newArr)
  }).then((newArr) => {
    for (let item of newArr) {
      let current = arr.filter((e) => {
        return item.a == e.a
      })
      result.push(current)
    }
    console.log(result)
  })

  //数组对象去重
  function screen(arr) {
    let map = new Map();
    for (let item of arr) {
      if (!map.has(item.a)) {
        map.set(item.a, item);
      }
    }
    return [...map.values()];
  }

上一篇下一篇

猜你喜欢

热点阅读