js 如何拿二维数组里的某个值,取出该值的其他对应数据。

image.png

比如上面这个数组,我怎么用shipping_area_id去取出该shipping_area_id对应的shipping_area_name

我用for循环写过以下方法,套进去发现没什么用。

arrayLookup(data,key,value,targetKey){
      var targetValue = "";
      for (var i = 0; i < data.length; i++) {
          if(data[i][key]==value){
              targetValue = data[i][targetKey];
              break;
          }
      }
      return targetValue;
    },
阅读 9.7k
4 个回答
function getValue(data, key){
    return data.filter(el => el.shipping_area_id === key)[0].shipping_area_name;
}
var value = getValue(data, 103);
console.log(value);

看下这个是否符合你的需求

你看看 是不是这种效果?

var a = [{id: 1, name: '11'}, {id: 2, name: '22'}];

function getNameById(id, data, idKey = 'id', nameKey = 'name') {
  var res = data.filter(item => item[idKey] === id);
  if(res && res.length) {
    return res[0][nameKey];
  } else {
    console.log('没有该 id 的值');
  }
}

getNameById(2, a, 'id', 'name'); // '22'
function getName(data, area_id) {
    if(!Array.isArray(data)) return
    let find = data.find(item => item.shipping_area_id === area_id)
    if(find) {
        return find.shipping_area_name
    }
}

做个映射表或者数组转成map

const myMap = arr.reduce((pre, next)=>{
    return {...pre, [next.id]: next.name}
}, {})

生成的结构:

{
    id:1, name:'a',
    id:2, name:'b',
    ....
}

然后 myMap[id] 就能拿到你需要的对应的 name 了

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