使用Javascript为重复索​​引创建新循环

时间:2017-08-21 18:58:58

标签: javascript arrays indexing duplicates

快速提问。我需要使用重复索引创建一个数组。例如,我有一个像:

这样的数组
var array = [2, 3, 2, 4, 3, 2, 6, 7];

我需要为每个重复索引获得一个新的循环交互,响应应该是这样的:

[ 
  [2, 3, 4, 6, 7],
  [2, 3],
  [2],
]

如果可能,请告诉我以及如何创建一些功能。

谢谢!

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))