数组知道下标,取值问题

const data = [{
    value: 1,
    label: '东南',
    children: [{
        value: 2,
        label: '上海',
        children: [{
                value: 3,
                label: '普陀'
            },
            {
                value: 4,
                label: '黄埔'
            },
            {
                value: 5,
                label: '徐汇'
            }
        ]
    }, {
        value: 7,
        label: '江苏',
        children: [{
                value: 8,
                label: '南京'
            },
            {
                value: 9,
                label: '苏州'
            },
            {
                value: 10,
                label: '无锡'
            }
        ]
    }]
}]

const values = [1,7,10]

问题就是给出了数组,给出了下标,怎么获取到label值,比如这里应该得到的值是"无锡"。
我现在能想到的是一层层遍历匹配,但是层数是不固定的,如果层数过多呢

阅读 2.3k
1 个回答
const value = values.reduce((d, v) => {
  let arr = Array.isArray(d) ? d : d.children || [];
  return arr.find(item => item.value === v);
}, data);

console.log(value)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题