【问题标题】:Array indexing confusion数组索引混乱
【发布时间】:2015-02-01 05:49:13
【问题描述】:

我有一个名为“文件”的 Javascript 数组。数组的任何元素也可以是一维数组,并且没有嵌套数组的限制。

所以我在这里的情况是我的数组是动态的,并且当我在另一个数组中给出 Files 数组的那个元素的索引时,我可以在任何时间和某个时间访问一个元素时添加任何元素,例如 var index = [0,1,3,5] 那么这意味着我必须访问这个数组的Files[0][1][3][5]

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

【问题讨论】:

标签: javascript arrays indexing


【解决方案1】:

听起来您需要遍历所有索引。类似这样的东西包装在函数中:

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()

【讨论】:

  • 您也做了同样的工作,即缩短数组,但您的代码已完成并检查该元素是否存在。 Kyle Booth 的回答已经完成了我的工作,但您的回答给了我另一种使用 whileshift() 而不是 for 循环的方式。谢谢!
  • 你能告诉我是否要更新主数组中的那个元素 Files。我该怎么做。
【解决方案2】:

我是用 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 的最后一个元素。不确定这是否有意义,如果我需要澄清,请告诉我。

【讨论】:

  • “我是用 Python 做的” - 为什么?
  • 只是不熟悉 javascript 语法,我想对其进行测试以确保它产生所需的结果。
  • 您的逻辑使我的工作在您发布后的 2 分钟内完成!谢谢!
  • 你能告诉我是否要更新主数组中的那个元素 Files。我该怎么做。
  • 文件可以是任何你想要的......只要根据需要改变它!
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多