簡體   English   中英

為什么計數器未在我的循環中重置?

[英]Why isn't the counter not resetting in my loop?

我有一批貨物,並且在陣列上運行一個循環以查找具有多個包裹的貨物,因此我可以將它們克隆到一個新陣列中。 我需要處理運輸標簽,該標簽在陣列中每個對象上產生一個標簽。

我添加了一個新的鍵/值對以顯示計數器中的單個包裝號,但是我所有的“袋索引”都使用相同的編號

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

您需要在此處創建一個新對象:

if (Pkg > 1) {
        for (var k = 0; k < (Pkg - 1); k++) {
            data.push(shipment);
            shipment["BAG INDEX"] += 1; 
          };
  };

否則,您將只對同一個裝運對象進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM