数组索引混淆

时间:2015-02-01 05:49:14

标签: javascript arrays indexing

我在Javascript中有一个名为“Files”的数组。数组的任何元素也可以是1D的数组,并且没有嵌套数组的限制。

所以我的情况是我的数组是动态的,任何元素都可以在任何时候添加,有时当我必须访问一个元素时,我已经在另一个数组中给出了该元素的文件数组的索引,例如    var index = [0,1,3,5] 那意味着我必须访问此数组的Files[0][1][3][5]

我的问题,索引也可以是var index = [0,1]和索引参数的数量不固定。那么如何在javascript中编写一个函数,以便函数可以返回“Files”元素的值,因为我将为它提供索引变量。

2 个答案:

答案 0 :(得分:2)

听起来你需要遍历所有索引。这样的东西包含在函数中:

var Files = [[0, [1, 2, 3, [0,1,2,3,4,5,6]]]];
var index = [0, 1, 3, 5];

function getElement(arr, indexes) {

    var val = arr,
        parts = indexes;

    while (val[parts[0]]) {
        val = val[parts.shift()]
    }

    return parts.length == 0 ? val : null;
}

alert( getElement(Files, index) );

上面将修改index数组,如果你需要保留它,你可以在函数中使用它的副本:parts = indexes.slice()

答案 1 :(得分:1)

我是用Python做的,希望这可以帮助你:

Index = [2,1,0]

Files = [[1,2,3],[[1,2],3], [[1,2,3,4,5],[[[1,2],[1,2,3,4,5]],[1,2,3]]]]

new_array = []

for i in range(len(Index)):
    new_array = Files[Index[i]]
    Files = new_array

print Files

[[1, 2], [1, 2, 3, 4, 5]]

这基本上是为索引数组的每个阶段做的,减少了Files数组的维度,直到找到了Files的最后一个元素。不确定是否有意义,请告诉我是否需要澄清。