首页 > 解决方案 > 如何以角度对数组的重复元素进行分组

问题描述

我想将重复的元素分组为单独的对象数组,请帮助我

前任:

array = [{key: 1}, {key: 5}, {key: 1}, {key: 3}, {key: 5}, {key: 1}, {key: 3}, {key: 2}, {key: 1}, {key: 4}];

预期的 O/P:

newArrayObj = {[{key: 1}, {key: 1}, {key: 1}, {key: 1}], [{key: 3}, {key: 3}], [{key: 4}], [{key: 5}, {key: 5}] } 

标签: angulartypescript

解决方案


~ 比@ShayD 快 80% 答案:

let array = [
  { key: 1 },
  { key: 5 },
  { key: 1 },
  { key: 3 },
  { key: 5 },
  { key: 1 },
  { key: 3 },
  { key: 2 },
  { key: 1 },
  { key: 4 }
];

let x = [];

for (let i = 0; i < array.length; ) {
  const obj = array[i];
  const filtered = array.filter(filterObj => obj.key == filterObj.key);
  array = array.filter(filterObj => obj.key != filterObj.key);
  x.push(filtered);
}

document.querySelector("#output").innerText = JSON.stringify(x);
<p id="output"></p>


推荐阅读