我怎么能返回foreach javascript里面的值

时间:2018-03-09 10:44:55

标签: javascript arrays reactjs sorting ecmascript-6

我有一个需要返回国家/地区ID的函数。

我的列表是一个对象数组:

{
    id: 2,
    code: "AL",
    name: "Albania"
}...

以下是我从国家

获取所需ID的功能
getCountryID(countryName) {
            return country_list_with_id.forEach(res => {
                if (res.name.toLowerCase() === countryName) {
    console.log("the id is",res.id)// the log is 143
                    let id = res.id;
                    return id;
                }
            });
        }
    console.log(array.getCountryID("USA"))//undefined

所以我怎么能得到这个?

4 个答案:

答案 0 :(得分:3)

你不能。 forEach并非旨在返回任何内容,但您可以使用其他函数从数组中获取id

使用find将返回一个满足您条件的对象。

getCountry(countryName) {
    return country_list_with_id.find(item => item.name.toLowerCase() === countryName);
}

这将返回country对象,您可以从该对象注入id。如果未找到任何内容,则返回undefined。因此,您需要先检查该对象,然后尝试访问其属性。

const country = array.getCountry("USA");

console.log(country && country.id);

答案 1 :(得分:1)

您可以filter您的国家/地区来获得您想要的国家/地区,并返回结果。 countries[0]可能是undefined所以请使用我的示例或来自@void的三元运算符的if语句示例以下是片段:

const countries = [{ id: 2, code: "AL", name: "Albania" }, { id: 3, code: "DZ", name: "Algeria" }, { id: 4, code: "DS", name: "American Samoa" }];
function getCountryId(code) {
  const country = countries.filter(country => country.code === code);
  if(country.length > 0) {
    return country[0].name;
  } else {
    return "No such country.";
  }
}
console.log(getCountryId("DZ"));
console.log(getCountryId("USA"));

答案 2 :(得分:1)

您可以使用Array.prototype.filter按名称过滤国家/地区,然后返回id项目的first/last

const list = [{
  id: 2,
  code: "AL",
  name: "Albania"
}, {
  id: 3,
  code: "DZ",
  name: "Algeria"
}, {
  id: 4,
  code: "DS",
  name: "American Samoa"
}];


function getCountryId(name) {
  return (list.filter((country) => country.name === name)[0] || {}).id;
}


console.log(getCountryId('Algeria'));
console.log(getCountryId('NoneExistingCountry'));

答案 3 :(得分:0)

此处需要使用.filter。这将返回匹配特定条件的数组中的项



 var data = [{ id: 2, code: "AL", name: "Albania" }, { id: 3, code: "DZ", name: "Algeria" }, { id: 4, code: "DS", name: "American Samoa" }]

Array.prototype.getCountryID = function(code){
  var output = this.filter(el => el.code === code);
  return output.length > 0 ? output[0].id : "Not Found";
}

console.log(data.getCountryID("DS"));
console.log(data.getCountryID("something else"));