数组索引混乱
Array indexing confusion
我在 Javascript 中有一个名为 "Files" 的数组。数组的任何元素也可以是一维数组,嵌套数组的数量没有限制。
所以我这里的情况是我的数组是动态的,当我必须访问一个元素时,我可以随时添加任何元素,例如,当我在另一个数组中给出文件数组的该元素的索引时
var index = [0,1,3,5]
那么这意味着我必须访问这个数组的 Files[0][1][3][5]
。
我的问题是索引也可以var index = [0,1]
而且索引参数个数不固定。那么我如何在 javascript 中编写一个函数,以便函数可以 return "Files" 元素的值,因为我将为它提供索引变量。
我是在 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 的最后一个元素。不确定这是否有意义,如果我需要澄清,请告诉我。
听起来您需要遍历所有索引。像这样包裹在函数中的东西:
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()
.
我在 Javascript 中有一个名为 "Files" 的数组。数组的任何元素也可以是一维数组,嵌套数组的数量没有限制。
所以我这里的情况是我的数组是动态的,当我必须访问一个元素时,我可以随时添加任何元素,例如,当我在另一个数组中给出文件数组的该元素的索引时
var index = [0,1,3,5]
那么这意味着我必须访问这个数组的 Files[0][1][3][5]
。
我的问题是索引也可以var index = [0,1]
而且索引参数个数不固定。那么我如何在 javascript 中编写一个函数,以便函数可以 return "Files" 元素的值,因为我将为它提供索引变量。
我是在 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 的最后一个元素。不确定这是否有意义,如果我需要澄清,请告诉我。
听起来您需要遍历所有索引。像这样包裹在函数中的东西:
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()
.