对象数组的反向,根据子数组生成新的数组对象

遇到个挺难用文字描述的数组处理需求,话不多说,直接上案例。
我有一个对象数组:

[
      { id: 1, key: [1] },
      { id: 2, key: [1] },
      { id: 3, key: [2] },
      { id: 4, key: [1, 2] }
    ]


我需要以id为关键字,生成新的数组

[
  {key:1,id:[1,2,4]},
  {key:2,id:[3,4]}
]

实现方法:

const newArray = []

    arrayObj.forEach((obj) => {
      obj.key.forEach((key, index) => {
        const result = newArray.find((item) => item.key === key)
        if (result) {
          newArray.map((item) => {
            if (item.key === result.key) {
              const nobj = {
                key: result.key
              }
              nobj.id = result.id.push(obj.id)
              return nobj
            }
          })
        } else {
          // 数组不包含该值
          newArray.push({ key: key, id: [obj.id] })
        }
      })
    })

说明:用的最基本的循环遍历的方法,逐项输出是否有重复项。尚未测试数据量大时候的性能。有好的方式,欢迎指教。(我是一个听劝的)

你可能感兴趣的:(算法)