gpt4 book ai didi

javascript - 为什么计数器没有在我的循环中重置?

转载 作者:行者123 更新时间:2023-12-01 01:03:36 24 4
gpt4 key购买 nike

我有一组货件,我正在该数组上运行一个循环来查找具有多个包裹的货件,以便我可以将它们克隆到一个新数组中。我需要处理运输标签,为数组中的每个对象生成一个标签。

我添加了一个新的键/值对来显示计数器中的单个包裹编号,但我所有的“BAG INDEX”都具有相同的编号

// Function to sort the concatenated array
function compare( a, b ) {
if ( a["SNAP ID"] < b["SNAP ID"] ){
return -1;
}
if ( a["SNAP ID"] > b["SNAP ID"] ){
return 1;
}
return 0;
}

// Demo shipments array
var shipments = [{
"SNAP ID": "1234567890",
"FULL NAME": "Person 1",
"PACKAGE QTY": 5
},
{
"SNAP ID": "0987654321",
"FULL NAME": "Person 2",
"PACKAGE QTY": 2
},
{
"SNAP ID": "5432167890",
"FULL NAME": "Person 3",
"PACKAGE QTY": 3
}
];

// Empty array which will contain cloned shipment objects
var data = [];

// Running loop on the shipments array
for (var i = 0; i < shipments.length; i++) {

var Pkg = shipments[i]["PACKAGE QTY"]
var shipment = shipments[i]
shipment["BAG INDEX"] = 1

// Running loop on the shipments containing more the 1 packages
if (Pkg > 1) {

for (var k = 0; k < (Pkg - 1); k++) {

data.push(shipment);
shipment["BAG INDEX"] += 1;

};
};
};

var complete = shipments.concat(data);
var sorted = complete.sort(compare);
console.log(sorted);

这就是我要回来的

0: {SNAP ID: "0987654321", FULL NAME: "Person 2", PACKAGE QTY: 2, BAG INDEX: 2}
1: {SNAP ID: "0987654321", FULL NAME: "Person 2", PACKAGE QTY: 2, BAG INDEX: 2}
2: {SNAP ID: "1234567890", FULL NAME: "Person 1", PACKAGE QTY: 5, BAG INDEX: 5}
3: {SNAP ID: "1234567890", FULL NAME: "Person 1", PACKAGE QTY: 5, BAG INDEX: 5}
4: {SNAP ID: "1234567890", FULL NAME: "Person 1", PACKAGE QTY: 5, BAG INDEX: 5}
5: {SNAP ID: "1234567890", FULL NAME: "Person 1", PACKAGE QTY: 5, BAG INDEX: 5}
6: {SNAP ID: "1234567890", FULL NAME: "Person 1", PACKAGE QTY: 5, BAG INDEX: 5}
7: {SNAP ID: "5432167890", FULL NAME: "Person 3", PACKAGE QTY: 3, BAG INDEX: 3}
8: {SNAP ID: "5432167890", FULL NAME: "Person 3", PACKAGE QTY: 3, BAG INDEX: 3}
9: {SNAP ID: "5432167890", FULL NAME: "Person 3", PACKAGE QTY: 3, BAG INDEX: 3}
length: 10

最佳答案

您必须创建对象的副本。否则,您还将增加已添加到 data 数组中的对象的 BAG INDEX

简单地使用:

data.push(Object.assign({}, shipment));

关于javascript - 为什么计数器没有在我的循环中重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com