是的我知道如何在 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上搜索过。也许我使用了错误的关键字。任何人都可以帮助我吗?
谢谢!
答案 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);