Javascript 按对象属性筛选对象数组

Javascript 按对象属性筛选对象数组,javascript,reactjs,Javascript,Reactjs,我得到了一组物体 const countryList = [ { name: 'Afghanistan', id: 'AF' }, { name: 'Åland Islands', id: 'AX' }, { name: 'Albania', id: 'AL' }, { name: 'Algeria', id: 'DZ' }] 我想按对象“id”过滤数组并获取名称 这是我已经做过的,它正在发挥作用 getName = (id) => { let

我得到了一组物体

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)
}
getName=(id)=>{
让name=[]
对于(变量i=0;i
有更好的方法吗?

您可以使用获取对象,然后返回该对象的
名称

const countryList=[{name:'阿富汗',id:'AF'},{name:'奥兰群岛',id:'AX'},{name:'阿尔巴尼亚',id:'AL'},{name:'阿尔及利亚',id:'DZ'}]
const getName=id=>(countryList.find(x=>x.id==id)|{}).name
console.log(getName('AX'))

log(getName('DZ'))
如果
id
是唯一的,并将未知项作为默认对象,则可以找到该名称

const
getName=id=>(countryList.find(o=>o.id==id)| |{}),
countryList=[{name:'Afghanistan',id:'AF'},{name:'Åland Islands',id:'AX'},{name:'Albana',id:'AL'},{name:'Alegaria',id:'DZ'}];
log(getName('AL'));

console.log(getName('UK')
您可以使用
查找
数组方法:

const countryList=[
{name:'Afghanistan',id:'AF'},
{名称:'Åland Islands',id:'AX'},
{name:'albana',id:'AL'},
{姓名:'阿尔及利亚',id:'DZ'}];
getName=(id)=>{
让country=countryList.find(c=>c.id==id);
返回国家/地区!==未定义
?国家/地区名称
:“未找到”;
}
log(getName('DZ'));
您不需要“name”数组

getName=(id)=>{
对于(变量i=0;i
我想这也行

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

getName=(id)=>{
    countryList.filter(item=>{item.id===id})
    console.log(countryList[0].name)
}
如果国家id是唯一的,出于性能原因,您可以使用

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'

在这种情况下,只需检查
国家即可,因为
未定义的
是一个错误的值<代码>返回国?country.name:'未找到'@MaheerAli你是对的。然而,对于不知道find在未找到元素的情况下返回什么的人来说,更清楚的是声明返回undefined而不是null,例如,这就是我所寻找的。谢谢你们,希望我能在6分钟内把两个答案都标记为正确。不幸的是,由于我的低分,我不能对你的答案投赞成票。多么可笑的书呆子