我有对象数组
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)
}
还有更好的方法吗?
答案 0 :(得分:1)
如果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'));
答案 1 :(得分:0)
您可以使用find()
获取对象,然后返回该对象的name
。
const countryList = [ { name: 'Afghanistan', id: 'AF' }, { name: 'Åland Islands', id: 'AX' }, { name: 'Albania', id: 'AL' }, { name: 'Algeria', id: 'DZ' } ]
const getName = id => (countryList.find(x => x.id === id) || {}).name
console.log(getName('AX'))
console.log(getName('DZ'))
答案 2 :(得分:0)
您可以使用find
数组方法:
const countryList = [
{ name: 'Afghanistan', id: 'AF' },
{ name: 'Åland Islands', id: 'AX' },
{ name: 'Albania', id: 'AL' },
{ name: 'Algeria', id: 'DZ' }];
getName = (id) => {
let country = countryList.find(c=>c.id === id);
return country !== undefined
? country.name
: 'not found';
}
console.log(getName('DZ'));
请注意,getName
现在返回一个字符串,并且没有像在控制台中记录找到的值那样的副作用。同样,该函数现在可以按照名称中的说明进行操作,只是获得名称。
有关重新升级此方法的更多信息,请查看here。
答案 3 :(得分:0)
您不需要“名称”数组。
getName = (id) => {
for (var i = 0; i < countryList.length ; i++) {
if (countryList[i].id === id) {
console.log(name[i].name);
}
}
}
答案 4 :(得分:0)
我认为这也可行
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)
}
答案 5 :(得分:0)
如果国家/地区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'