比如上面这个数组,我怎么用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 了