3 回答
TA贡献1821条经验 获得超4个赞
您可以编写 find 数组以根据您的焦点数组获取数组。使用数组方法reduce从索引数组中查找节点
var updateNode = focus.reduce((node,index) => node && node[index], notes);
updateNode && updateNode.push("new content");
TA贡献2039条经验 获得超7个赞
您可以使用 for 循环来实现。
let myArray = rootArray
for(let i = 0; i < currentFocusedArray.length; i++){
myArray = myArray[currentFocusedArray[i]]
}
在此之后,您将myArray引用 的深层嵌套值rootArray。
let rootArray = {
"1": {
"2": []
}
}
let currentFocusedArray = [1, 2]
let myArray = rootArray
for(let i = 0; i < currentFocusedArray.length; i++){
myArray = myArray[currentFocusedArray[i]]
}
myArray.push("new content")
console.log(myArray)
TA贡献1829条经验 获得超9个赞
您可以使用reduce创建这样的函数来在任何级别设置嵌套数组元素。
const rootArray = []
function set(arr, index, value) {
index.reduce((r, e, i, a) => {
if (!r[e]) {
if (a[i + 1]) r[e] = []
} else if (!Array.isArray(r[e])) {
if (a[i + 1]) {
r[e] = [r[e]]
}
}
if (!a[i + 1]) {
if (Array.isArray(r)) {
r[e] = value
}
}
return r[e]
}, arr)
}
set(rootArray, [1, 2], 'foo');
set(rootArray, [1, 1, 2], 'bar');
set(rootArray, [1, 2, 2], 'baz');
console.log(JSON.stringify(rootArray))
添加回答
举报