我有,当我想创建一个多维数组的麻烦。如何创建一个对象作为在Javascript默认值的多维数组?
我不知道为什么,但我得到一个奇怪的现象,当我想创建一个对象作为默认值的多维数组。
我使用了不同的方法,如:
- https://stackoverflow.com/a/41435124/1741027
- https://stackoverflow.com/a/28625612/1741027
- https://stackoverflow.com/a/18116922/1741027
当我想要改变对象的领域中的任何一个出现麻烦。
function matrix(rows, cols, defaultValue){
var arr = [];
// Creates all lines:
for(var i=0; i < rows; i++){
// Creates an empty line
arr.push([]);
// Adds cols to the empty line:
arr[i].push(new Array(cols));
for(var j=0; j < cols; j++){
// Initializes:
arr[i][j] = defaultValue;
}
}
\t return arr;
}
var myArray = matrix(5, 5, {
\t status: 'OK'
});
myArray[2][1].status = 'NOT OK';
console.log('Strange behavior', myArray);
的变化而膨胀的其他位置。
任何人都可以帮助我吗?
太好了! 'cell => typeof defaultValue ==='object'? Object.assign({},defaultValue):defaultValue)'可以更加可重用。 – slorenzo
在这种情况下做'细胞=>对象(默认值)===默认值?',以确保'null'不被视为一个对象。 – trincot
谢谢,这非常有用。 – slorenzo