找到每个国家的大陆

mar*_*lle 5 javascript arrays object typescript

我有一系列的大陆和国家:

const continents = [
  {
    continent: 'Europe',
    countries: [
      'Albania',
      'Andorra',...
    ],
  },
  {
    continent: 'Asia',
    countries: [
      'Afghanistan',
      'Bahrain',...
    ],
  },
  {
    continent: 'Africa',
    countries: [
      'Algeria',
      'Angola',...
    ],
  },
  {
    continent: 'Americas',
    countries: [
      'Antigua and Barbuda',
      'Bahamas',...
    ],
  },
]
Run Code Online (Sandbox Code Playgroud)

还有一些国家:

const countries = ['Angola', 'Andorra']
Run Code Online (Sandbox Code Playgroud)

我想迭代各国并返回一个像这样的对象数组:

const result = countries.map(country => {
  return {
    continent: ??,
    country: country,
  }
})
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到每个国家的大陆?

我试试这个:

const continent = continents.forEach((continent, i) => {
  const countries = continent.countries
  if (find(countries, value.country)) return continent.continent
})
Run Code Online (Sandbox Code Playgroud)

但我明白了

[ts]并非所有代码路径都返回一个值.[7030]

Nin*_*olz 5

您可以continent通过使用Array#find和检查值来查找Array#includes

const
    continents = [{ continent: 'Europe', countries: ['Albania', 'Andorra'] }, { continent: 'Asia', countries: ['Afghanistan', 'Bahrain'] }, { continent: 'Africa', countries: ['Algeria', 'Angola'] }, { continent: 'Americas', countries: ['Antigua and Barbuda', 'Bahamas'] }],
    countries = ['Angola', 'Andorra'],
    result = countries.map(country => ({
        continent: continents.find(({ countries }) =>
            countries.includes(country)).continent,
        country,
    }));

console.log(result);
Run Code Online (Sandbox Code Playgroud)