我确信这非常简单,我真的不想要一个完整的解决方案,而是在我学习的过程中指出正确的方向。
我有:
let randomArray = [1,2,4,591,392,391,2,5,10,2,1,1,1,20,20];
目标是让它看起来像这样,对项目进行分组:[[1,1,1,1],[2,2,2],[10],[20,20],[391],[392],[591]]
我的以下代码安排好了,并且分组很好。我将温度推送到我的 Group 数组。但是当我重置我的“tempArray”以使其为下一个“组”准备好时,它也会从我的组中删除数据。因为有联系?我假设?也许?最后剩下的只有最后一项。
我该如何阻止它这样做?
// My SOlution
let randomArray = [1,2,4,591,392,391,2,5,10,2,1,1,1,20,20];
let tempArray = [];
let groupArray = [];
function cleanTheRoom (arr) {
let ascendingArray = arr.sort(function(a,b) {
return a - b;
});
tempArray.push(randomArray[0])
for (let i = 1; i <= randomArray.length; i++) {
if (randomArray[i] === tempArray[0]) {
tempArray.push(randomArray[i])
} else {
groupArray.push(tempArray);
tempArray = []
tempArray.push(randomArray[i])
}
} console.log(groupArray)
}
cleanTheRoom(randomArray);
最佳答案
我拿了你的代码并改变了一些部分。
Array#sort
排序到位。无需分配给新变量。groupArray
并将小组推向结果。而不是使用相同的对象引用,而是通过将零分配给
length
来清空数组。 ,这种方法需要一个新的数组。if
之外声明,因为它在 then 和 else 部分加倍。function cleanTheRoom(array) {
let result = [];
let groupArray;
array.sort(function(a, b) {
return a - b;
});
for (let i = 0; i < array.length; i++) {
if (array[i - 1] !== array[i]) {
groupArray = [];
result.push(groupArray);
}
groupArray.push(array[i]);
}
return result;
}
let randomArray = [1, 2, 4, 591, 392, 391, 2, 5, 10, 2, 1, 1, 1, 20, 20];
console.log(cleanTheRoom(randomArray));
关于javascript - 将数组添加到数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63743758/