为什么JS中这两个数组的语法不同?

时间:2017-08-31 21:11:58

标签: javascript arrays developer-tools

它们都包含相同的值,但我想知道为什么当我在Dev工具中控制它们时它们看起来有什么不同。

enter image description here

var values = [6, 6, 6, 19, 13, 50]; 

function boxWidth() {
    var widths = new Array();
    widths.push(values);
    console.log(widths);
    console.log(values);
} 

2 个答案:

答案 0 :(得分:5)

widths数组是一个数组,其中有一个成员引用values数组,而values是一个包含6个数字的数组。

要单独复制数字,请执行以下操作:

widths.push(...values);

或者在创建数组时执行此操作:

var widths = [...values];

或者是传统兼容:

var widths = values.slice();

您可以序列化数组以获得更清晰的视图。



var values = [6, 6, 6, 19, 13, 50]; 

function boxWidth() {
    var widths = new Array();
    widths.push(values);
    console.log(JSON.stringify(widths));
    console.log(JSON.stringify(values));
} 

boxWidth();




答案 1 :(得分:4)

values是一个包含6个数字的1维数组。

widths是一个二维数组。它的第一个维度是单个元素,它是对values的引用。第二个维度是values中的6个数字。

默认情况下,

console.log()仅显示第一个维度。您可以单击widths的显示三角形以查看内部维度的内容。如果将其更改为log JSON,您将看到每个JSON的完整结构。然后,您将在widths中看到额外的嵌套级别。

var values = [6, 6, 6, 19, 13, 50]; 

function boxWidth() {
    var widths = new Array();
    widths.push(values);
    console.log(JSON.stringify(widths));
    console.log(JSON.stringify(values));
} 

boxWidth();