快速提问。我需要使用重复索引创建一个数组。例如,我有一个像:
这样的数组var array = [2, 3, 2, 4, 3, 2, 6, 7];
我需要为每个重复索引获得一个新的循环交互,响应应该是这样的:
[
[2, 3, 4, 6, 7],
[2, 3],
[2],
]
如果可能,请告诉我以及如何创建一些功能。
谢谢!
答案 0 :(得分:2)
你可以做这样的事情
var array = [2, 3, 2, 4, 3, 2, 6, 7];
array.sort();
let idx = 0, result = [];
for(let i=0; i<array.length; i++){
if(i>0 && array[i] != array[i-1]){
idx = 0;
}
if(idx == result.length)
result[idx] = [];
result[idx].push(array[i]);
idx++;
}
console.log(result);
答案 1 :(得分:2)
您可以使用一个对象来存储每个元素的出现次数,并使用该值创建结果数组。
var array = [2, 3, 2, 4, 3, 2, 6, 7];
var obj = {}, result = []
array.forEach(function(e) {
obj[e] == undefined ? obj[e] = 0 : obj[e] += 1;
result[obj[e]] = (result[obj[e]] || []).concat(e)
})
console.log(JSON.stringify(result))