[英]Unacceptable value in associative array in Javascript
I set value in associative array in 2D array in JavaScript.我在 JavaScript 中的二维数组中的关联数组中设置了值。 I used a following source code:
我使用了以下源代码:
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);
I created 2D array which I populated with properties (associative array, all values are false).我创建了用属性填充的二维数组(关联数组,所有值都是假的)。 Then I set a true for isBold for *listOfProperties[2][2]**.
然后我为 *listOfProperties[2][2]** 为isBold设置了true 。
But why isBold in listOfProperties[0][0] includes true instead false ?但是为什么listOfProperties [0][0]中的isBold包含true而不是false ?
You need to fill the 2D array of copies of the object, not the reference:您需要填充对象副本的二维数组,而不是引用:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.