簡體   English   中英

使用數組推送獲取額外的括號

[英]Getting extra brackets using array push

我正在嘗試構建一個小型的自定義記錄器,而我在進行數組推送時注意到我得到了多余的括號,無法弄清楚發生了什么。 這是示例輸出

{
"GuestCheckout": [
    {
        "log": "Product Id: 78-1212121",
        "screenshot": ""
    },
    [
        {
            "log": "Product Color: undefined Product Size: 6 Lb Qty: 2",
            "screenshot": ""
        }
    ],
    [
        {
            "log": "",
            "screenshot": "results/screenshots/Guest Checkout - Failed.jpg"
        }
    ]
]
}

這是具有記錄器功能的類

var logs = {},
curLogs = [];

module.exports = {
    logger: function(log, screenshot) {
      isScreenshot = screenshot || "false";
      curTestName = testName.replace(/ /g,'');
      curLogs = [];

      if (isScreenshot == "true") {
        curLogs.push({
            "log": "",
            "screenshot": log
        });
      } else {
        curLogs.push({
            "log": log,
            "screenshot": ""
        });
      }

      if (curTestName in logs) {
        logs[curTestName].push(curLogs);
      } else {
        logs[curTestName] = curLogs;
      }

      console.log(curLogs);
    }
}

您會注意到,第一個日志和屏幕截圖顯示,它用{}包裹,而第二個實例用[]包裹。 多次調用此記錄器功能。 我認為這與推動構建的方式有關,但我可能是錯的。 謝謝

更新:有了一個解決方案,現在的輸出看起來像這樣

{
  "GuestCheckout": [
    [
        {
            "log": "Product Id: 36-5173230",
            "screenshot": ""
        }
    ],
    [
        {
            "log": "Product Color: undefined Product Size: 6 Lb Qty: 2",
            "screenshot": ""
        }
    ],
    [
        {
            "log": "",
            "screenshot": "results/screenshots/Guest Checkout - Failed.jpg"
        }
    ]
  ]
}

現在的問題是所有{logs,screenshots}都放在方括號中。

當您將某些內容記錄到已經存在的測試中時,問題就開始了。 如果日志已經存在,則說明您正在推送數組而不是對象。 要解決此問題,您有兩個選擇。 要么拉出用於測試的現有陣列並直接將其推入,要么隨后將每個新的日志條目推入到測試中。

var logs = {},
curLogs = [];

module.exports = {
    logger: function(log, screenshot) {
      isScreenshot = screenshot || "false";
      curTestName = testName.replace(/ /g,'');
      if (!logs[curTestName]) {
        // initialize logs entry
        logs[curTestName] = [];
      }
      // get logs entry
      curLogs = logs[curTestName];

      if (isScreenshot == "true") {
        curLogs.push({
            "log": "",
            "screenshot": log
        });
      } else {
        curLogs.push({
            "log": log,
            "screenshot": ""
        });
      }
      console.log(curLogs);
    }
}

要么

var logs = {},
curLogs = [];

module.exports = {
    logger: function(log, screenshot) {
      isScreenshot = screenshot || "false";
      curTestName = testName.replace(/ /g,'');
      curLogs = [];

      if (isScreenshot == "true") {
        curLogs.push({
            "log": "",
            "screenshot": log
        });
      } else {
        curLogs.push({
            "log": log,
            "screenshot": ""
        });
      }

      if (curTestName in logs) {
        Array.push.apply(logs[curTestName], curLogs);
      } else {
        logs[curTestName] = curLogs;
      }

      console.log(curLogs);
    }
}

您將carlog定義為數組。 在第一步中,您將對象推到數組中。 這就是為什么沒有[]的原因。 在第2步和第3步中,您將數組推送到carlog。 這就是為什么有[]。

暫無
暫無

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

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