我试图建立一个数组,其中一部分重复两次。它由三篇文章(在articleArray [0]至articleArray [2]中)组成,每篇文章都有文章中每个单词的列表(例如articleArray [1] [1]列出了该文章中的每个单词)。我想将最后一部分克隆到articleArray [1] [2],但是由于某种原因,它将无法正常工作?我正在使用for循环

for (var x=0; x < articleCount; x++) {
    for (var y=0; y < articleArray[x][1].length; y++) {
            articleArray[x][2] = [];
            articleArray[x][2][y] = articleArray[x][1][y];
        }
    }


运行该命令后,出于某种原因,articleArray [1] [2]中的每个值(最后一个除外)均为空。为什么不复制我的价值观?

最佳答案

您反复用空数组覆盖articleArray[x][2]。您将需要移动线

articleArray[x][2] = [];


在内循环之外上一层:

for (var x=0; x < articleCount; x++) {
    articleArray[x][2] = [];
    for (var y=0; y < articleArray[x][1].length; y++) {
        articleArray[x][2][y] = articleArray[x][1][y];
    }
}


注意,可以使用slice克隆数组来简化此操作:

for (var x=0; x < articleCount; x++) {
    articleArray[x][2] = articleArray[x][1].slice();
}

10-02 00:07