为了账号安全,请及时绑定邮箱和手机立即绑定

按对象属性过滤对象数组

按对象属性过滤对象数组

慕后森 2021-05-11 17:30:26
我有很多物体const countryList =  [    { name: 'Afghanistan', id: 'AF' },    { name: 'Åland Islands', id: 'AX' },    { name: 'Albania', id: 'AL' },    { name: 'Algeria', id: 'DZ' }]我想按对象“ id”过滤数组并获取名称这是我已经完成的工作getName = (id) => {    let name=[]    for (var i = 0; i < countryList.length ; i++) {        if (countryList[i].id === id) {            name.push(countryList[i]);                        }     }    console.log(name[0].name)}有什么更好的方法吗?
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以找到名称(如果名称id是唯一的),并将未知对象作为默认对象。


const

    getName = id => (countryList.find(o => o.id === id) || {}).name,

    countryList = [{ name: 'Afghanistan', id: 'AF' }, { name: 'Åland Islands', id: 'AX' }, { name: 'Albania', id: 'AL' }, { name: 'Algeria', id: 'DZ' }];


console.log(getName('AL'));

console.log(getName('UK'));


查看完整回答
反对 回复 2021-05-27
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

如果国家/地区ID是唯一的,则出于性能原因,您可以使用array.some。


getCountryName = (countryList, id) => {

    name = null;

    countryList.some((x, idx) => {

        result = false;

        if(x.id === id) {

            name = x.name;

            result = true;

        }

        return result;

    });

    return name;

}

用法是


getCountryName(countryList, 'AF')

结果是


'Afghanistan'


查看完整回答
反对 回复 2021-05-27
  • 3 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信