JavaScript求一返回方法

function returnIt(code) {

  // return obj
}

通过已知value(编码) 返回对象
e.g. returnIt('000003');返回{value: '000003', label: '渭南市', isLeaf: true}

const cityList = [
      {
      label: '全国',
      value: '000000',
      children: [
        {
          label: '陕西省',
          value: '000001',
          children: [
            {value: '000002', label: '西安市', isLeaf: true},
            {value: '000003', label: '渭南市', isLeaf: true},
          ],
        },
        {label: '上海', value: '000005', isLeaf: true},
        {label: '北京', value: '000006', isLeaf: true},
        {
          label: '河南省',
          value: '000007',
          children: [
            {value: '000008', label: '信阳', isLeaf: true},
            {value: '000009', label: '周口', isLeaf: true},
            {value: '000010', label: '其他', isLeaf: true},
          ],
        },
        {
          label: '山东省',
          value: '000011',
          children: [
            {value: '000012', label: '枣庄', isLeaf: true},
            {value: '000013', label: '烟台', isLeaf: true},
            {value: '000014', label: '淄博', isLeaf: true},
          ],
        },
      ]
    }];
阅读 1.6k
2 个回答

简单递归一下就行了

function returnIt(code, list) {
  for (let item of list) {
    if (item.value === code) return item;
    if (item.children) {
      const child = returnIt(code, item.children);
      if (child) return child;
    }
  }
}

因为是纯函数,调用需把cityList作为参数传递进去

const result = returnIt('000003', cityList);
console.log(result);
  
function getReturnIt(arr,value){
        let newarr = arr;
        let curr = null;
        while(newarr.length > 0){
            curr = newarr.shift();
            if(value === curr.value){
                return curr
            }
            if(curr.children){
                newarr.push(...curr.children)
            }
        }
    }

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