Javascript关联数组中的值不可接受

问题描述

我在JavaScript的2D数组中的关联数组中设置了值。我使用了以下源代码

var properties = {
  "isBold": false,"isItalic": false,"isUnderline": false
};

// Creation of 2D array,6x6
var listofProperties = new Array(6);
for (var i = 0; i < listofProperties.length; i++) {
  listofProperties[i] = new Array(6);
}

// Population of listofProperties with properties
for (var row = 0; row < listofProperties.length; row++) {
  for (var col = 0; col < listofProperties.length; coL++) {
    listofProperties[row][col] = properties;
  }
}

var property = listofProperties[2][2];
property.isBold = true; // I would like to populate property isBold
console.log("property > " + property.isBold);

var property = listofProperties[0][0];
console.log("property > " + property.isBold);

我创建了一个 properties 填充的2D数组(关联数组,所有值均为false)。然后为* listofProperties [2] [2] **设置 isBold true

但是为什么 listofProperties [0] [0] 中的 isBold 包含 true 而不是 false

解决方法

您需要填充对象副本的2D数组,而不是引用:

var properties = {
  "isBold": false,"isItalic": false,"isUnderline": false
};

// Creation of 2D array,6x6
var listOfProperties = new Array(6);
for (var i = 0; i < listOfProperties.length; i++) {
  listOfProperties[i] = new Array(6);
}

// Population of listOfProperties with properties
for (var row = 0; row < listOfProperties.length; row++) {
  for (var col = 0; col < listOfProperties.length; col++) {
    listOfProperties[row][col] = Object.assign({},properties);
  }
}

var property = listOfProperties[1][1];
property.isBold = true; // I would like to populate property isBold
console.log("property > " + property.isBold);

var property = listOfProperties[0][0];
console.log("property > " + property.isBold);

有关更多详细信息,请检查this