在Javascript

时间:2017-07-11 14:44:37

标签: javascript arrays multidimensional-array indexing properties

是的我知道如何在 Javascript 中循环遍历数组(类型)。事实上,我想知道如何通过一组给定的multiDimensionalArray设置indexes数组的值,以使其尽可能保持通用。例如,我有一个长度为3的数组(也可能长度为4,100,......):

var indexes = [0, "title", "value"];

我知道可以通过放置索引来设置多维数组(mArray):

multiDimensionalArray[0]["title"]["value"] = "Jeroen";multiDimensionalArray[indexes[0]][indexes[1]][indexes[2]] = "Jeroen";

给定的索引数组可以变化并且并不总是包含相同的索引名称,因此我正在搜索这样的解决方案:

multiDimensionalArray[indexes] = "Jeroen";

如果这样,我不知道如何编码分配。我在Google / Stack Overflow上搜索过。也许我使用了错误的关键字。任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

以下示例是我如何使其工作,感谢Jonas的例子:

// declare a variable of nullable function type:
var onSomeActionListener: ((Int, String) -> Unit)? = null

// declare higher-order function:
fun setOnSomeActionListener(listener: (Int, String) -> Unit) {
    onSomeActionListener = listener
}

// set listener:
val listener: (Int, String) -> Unit = { p1, p2 -> { /* some stuff */ } }
setOnSomeActionListener(listener)

// or in one line:
setOnSomeActionListener { p1, p2 -> { /* some stuff */ } }

答案 1 :(得分:0)

所以想象你有这样的结构:

var array=[[["before"]]];

然后你想要

var indexes=[0,0,0];
var value="value";

实际做到:

array[0][0][0]="value";

可以通过reduce来轻松实现:

indexes.slice(0,-1).reduce((obj,index)=>obj[index],array)[indexes.pop()]=value;

说明:

indexes.slice(0,-1) //take all except the last keys and
.reduce((obj,index)=>obj[index] //reduce them to the resulting inner object e.g. [0,0] => ["before"]
,array) //start the reduction with our main array
[indexes.pop()]=value;// set the reduced array key to the value

    var array=[[[0]]];


    var indexes=[0,0,0];
    var value="value";
    indexes.slice(0,-1).reduce((obj,index)=>obj[index],array)[indexes.pop()]=value;
    
    console.log(array);