【发布时间】:2019-09-16 11:10:42
【问题描述】:
我有一个函数,它接受一个数组数组和两个输入值。该函数需要返回一个包含所有这些信息的数组;但是,一旦访问了第三级数组,它就会复制一个“未定义”的值,而不是那里的实际数组。
我也尝试过传入数组的副本而不是原始引用,但出现了同样的问题。
function relation(list, x, y){
var x = [list, x, y];
return x;
}
使用复制功能的尝试:
function copy(list){
var newList = [];
for (var i = 0; i < list.length; i++){
if (Array.isArray(list[i])){
newList[i] = list[i].slice();
}
else newList[i] = list[i];
}
return newList;
}
function relation(copy(list), x, y){
var x = [list, x, y];
return x;
}
不管使用哪个版本的relation(),调用函数
var x = [0, [0, [0, 1, 2] ] ];
var y = relation(x, 5, 10);
console.log(y);
应该是
[ [ 0, [ 0, [0, 1, 2] ] ], 5, 10]
但实际上返回
[ [ 0, [ 0, [Array] ] ], 5, 10]
同样,当尝试访问最内层数组中的元素时:
console.log(y[0][0][0]);
函数返回未定义。
有没有一种简单的方法可以复制这个最里面的数组?
【问题讨论】:
标签: javascript arrays jagged-arrays