为了账号安全,请及时绑定邮箱和手机立即绑定

如何动态访问数组中的索引?

如何动态访问数组中的索引?

胡子哥哥 2021-06-12 02:09:27
我有一个带有一些嵌套数组的 rootArray,它可以是任何深度。我想动态访问由索引列表定义的某个内部数组,以将新内容推送到那里。例如,如果索引列表是currentFocusedArray = [1,2]我想要...rootArray[1][2].push('new content')动态的,而不是硬连线的。也许这是树木不让我看到森林的情况,或者我在死胡同里。我只是做一个简单的笔记应用程序,带有反应,非常简单。https://codesandbox.io/embed/quirky-gauss-09i1h欢迎任何建议!希望我没有浪费你的时间。提前致谢。
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您可以编写 find 数组以根据您的焦点数组获取数组。使用数组方法reduce从索引数组中查找节点


var updateNode = focus.reduce((node,index) => node && node[index], notes);

updateNode && updateNode.push("new content");


查看完整回答
反对 回复 2021-06-18
?
largeQ

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)


查看完整回答
反对 回复 2021-06-18
?
PIPIONE

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


查看完整回答
反对 回复 2021-06-18
  • 3 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信