问答

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

作者:admin 2021-08-20 我要评论

比如上面这个数组,我怎么用 shipping_area_id 去取出该 shipping_area_id 对应的 shipping_area_name 我用for循环写过以下方法,套进去发现没什么用。 arrayLoo...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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;
    },
###
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 了

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用箭头函数return数据不能实现

    使用箭头函数return数据不能实现

  • 个人小程序号能接入小程序3D地图吗?

    个人小程序号能接入小程序3D地图吗?

  • vue 移动端项目中,使用了better-scrol

    vue 移动端项目中,使用了better-scrol

  • css如何做出区域平均划分为四列

    css如何做出区域平均划分为四列

腾讯云代理商
海外云服务器