javascript - 将数组添加到数组数组
问题描述
我确信这非常简单,我真的不想要一个完整的解决方案,而是在我学习的过程中指出正确的方向。
我有:
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));
推荐阅读
- postgresql - PostgreSQL:在触发器的函数中检查 NEW 和 OLD
- scala - 列表上的模式匹配以检查是否为空
- angularjs - 将数据从子组件传递给父组件并返回
- jenkins - 如何在詹金斯管道中获取输入步骤输出
- python - 使用多个类实例并行化 pandas
- node.js - RobinBuschmann/soap-typescript/soap-decorators 示例
- amazon-web-services - AWS Lambda 服务的用户验证异常
- python - 如何将熊猫数据框单行拆分为两行?
- algorithm - 计算时间序列中的周期
- android - 如何预测 Google Text-to-Speech 的失败?