繁体   English   中英

在Javascript函数中访问嵌套数组

[英]Accessing nested arrays in Javascript functions

我有一个函数,需要一个数组数组和两个输入值。 该函数需要返回一个包含所有这些信息的数组。 但是,一旦访问了第三级数组,它将复制“ undefined”值,而不是那里的实际数组。

我也尝试传递数组的副本而不是原始引用,但是发生相同的问题。

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]);

该函数返回未定义。

有没有简单的方法可以复制此最里面的数组?

只需使用console.log(JSON.stringify(y)) ,您就会意识到一切都会按预期进行。

对于数组的浅表副本,请使用传播运算符: ...

let copy = [...array]

顺便说一句,请注意如何分配变量: var x = [list, xy];

 var nested = [0, [0, [0, 1, 2] ] ]; function notMuchChanged(array, x, y){ let outerArray = []; let copyArray = [...array]; outerArray.push(copyArray); outerArray.push(x); outerArray.push(y); return outerArray; } console.log(JSON.stringify(notMuchChanged(nested, 5, 10))); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM