我对JavaScript还比较陌生,我试图构建一些我在挑战中发现的函数。我已经解决了这个问题,但我感觉这是一种非常复杂的方式,有没有更快的方法?
基本上answer(array)应该将其转换为:
const array = [1,2,4,591,392,391,2,5,10,2,1,1,1,20,20];
变成这样:
newArray = [[1,1,1,1],[2,2,2], 4,5,10,[20,20], 391, 392,591];
以下是我的代码:
const array = [1, 2, 4, 591, 392, 391, 2, 5, 10, 2, 1, 1, 1, 20, 20];
const duplicates = arr =>
arr.reduce((a, b) => ({ ...a,
[b]: (a[b] || 0) + 1
}), {})
array.sort((a, b) => a - b);
let array1 = duplicates(array);
var values = Object.values(array1);
var keys = Object.keys(array1);
var newArray = [];
for (let i = 0; i < keys.length; i++) {
let tempArray = [];
for (let j = 0; j < values[i]; j++) {
tempArray.push(keys[i]);
}
newArray.push(tempArray);
}
console.log(newArray);
这个重复函数来自这篇有关查找重复值的帖子