繁体   English   中英

Chrome 开发工具中的不同数组

[英]Different Array(s) in Chrome Dev Tools

为什么 Chrome Dev Tools 会在水果数组前面放一个“(3)”,而不是年份数组?

在此处输入图像描述

第一个是 fetch 的结果,如下所示:

    fetch('http://localhost:8000/damagequery')
  .then(response => response.json())
  .then(data => {
      data.forEach(element => {
          console.log(element[""][1])
          damageCount.push(element[""][0])
          year.push(element[""][1].toString())
        //   [0][""]
        // [0][""][0]
      });
  });

第二个只是这样的测试:

let fruit = ['Apples', 'Bananas', 'Oranges']

JS 会比较引用进行数组相等,这意味着即使您的 arrays 包含相同的元素,它们也不会相等,因为它们位于不同的 memory 地址。

如果你想比较两个 arrays 我建议使用 lodash。 在此处查看示例:

使用 lodash 比较锯齿状的 arrays(项目存在无序)

如果您不想使用 lodash,则需要定义自己的逻辑:

const a = [1, 2, 3];
const b = [1, 2, 3];
const areEqual = a.length === b.lenght && a.every((elem, index) => elem === b[index]);

这个问题似乎与这个有非常详细的回答有关。

如何比较 JavaScript 中的 arrays?

原因很简单, year数组在填充之前记录到控制台。 您使用了异步的fetch ,因此它在console.log(year)之后调用,但是由于 JS 中的引用,在您在控制台中单击该数组后,该数组将被“刷新”。

类似情况如下:

let year = [];
let fruit = ['Apples', 'Bananas', 'Oranges'];

setTimeout(function() {
    const response = ["2000", "2016", "2017"];

    response.forEach(element => {
        year.push(element);
    });
}, 500);

console.log(year);
console.log(fruit);

现场示例: http://jsfiddle.net/BlackLabel/yzucwp5b/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM