【问题标题】:Getting an array of specific key/value pairs from JSON file从 JSON 文件中获取特定键/值对的数组
【发布时间】:2020-11-30 14:50:38
【问题描述】:

这里是初学者 - 我想从 JSON 文件为我的世界城市类型提前项目创建一个数组。我已经获取了数据,现在我想提取 2 个键/值对(称为名称/国家/地区)并将它们推送到一个新的字符串数组中,该数组将具有以下语法:

const arr = ["name, country", "name, country", "name, country"...]

以下是数据示例:

[]:
0: {country: "Andorra", geonameid: 3040051, name: "les Escaldes", subcountry: "Escaldes-Engordany"}
1: {country: "Andorra", geonameid: 3041563, name: "Andorra la Vella", subcountry: "Andorra la Vella"}
2: {country: "United Arab Emirates", geonameid: 290594, name: "Umm al Qaywayn", subcountry: "Umm al Qaywayn"}
3: {country: "United Arab Emirates", geonameid: 291074, name: "Ras al-Khaimah", subcountry: "Raʼs al Khaymah"}...

我知道我必须使用 .push().forEach() 或 for 循环,但我不知道该怎么做。谁能告诉我怎么做?

【问题讨论】:

  • data.forEach(i => arr.push(i.name + ", " + i.country)) 应该这样做
  • @ibrahimmahrir,注意到就知道了,谢谢
  • data.map(i => arr.push(`${i.name} , ${i.country}`)
  • @AbishekKumar 你还在使用map,比如forEach。那应该是forEach 而不是map

标签: javascript arrays json javascript-objects


【解决方案1】:

像这样使用map

const arr = data.map(city => city.name + ", " + city.country);

arr 将是一个与data 长度相同的新数组,其中data 中的每个city 对象都映射到字符串city.name + ", " + city.country

演示:

const data = [ {country: "Andorra", geonameid: 3040051, name: "les Escaldes", subcountry: "Escaldes-Engordany"}, {country: "Andorra", geonameid: 3041563, name: "Andorra la Vella", subcountry: "Andorra la Vella"}, {country: "United Arab Emirates", geonameid: 290594, name: "Umm al Qaywayn", subcountry: "Umm al Qaywayn"}, {country: "United Arab Emirates", geonameid: 291074, name: "Ras al-Khaimah", subcountry: "Raʼs al Khaymah"} ];

const arr = data.map(city => city.name + ", " + city.country);

console.log(arr);

【讨论】:

    【解决方案2】:

    const data = [{country: "Andorra", geonameid: 3040051, name: "les Escaldes", subcountry: "Escaldes-Engordany"},
    {country: "Andorra", geonameid: 3041563, name: "Andorra la Vella", subcountry: "Andorra la Vella"},
    {country: "United Arab Emirates", geonameid: 290594, name: "Umm al Qaywayn", subcountry: "Umm al Qaywayn"},
    {country: "United Arab Emirates", geonameid: 291074, name: "Ras al-Khaimah", subcountry: "Raʼs al Khaymah"}]
    
    const arr = data.map(i => `${i.name} , ${i.country}`);
    console.log(arr)

    【讨论】:

      【解决方案3】:

      如果你愿意,你可以使用reduce函数:

      arr.reduce((acc, curr) => [...acc, (`${curr.name}, ${curr.country}`)], []);
      

      它将以您想要的格式返回您的值。

      以下示例。

      const arr = [
          {country: 'Andorra', geonameid: 3040051, name: 'les 1', subcountry: 'Escaldes-Engordany'},
          {country: 'Turkey', geonameid: 3040021, name: 'les Escaldes', subcountry: 'aaaa'},
          {country: 'IDK', geonameid: 3040021, name: 'Wow', subcountry: 'aaaa'}
      ];
      const custom = arr.reduce((acc, curr) => [...acc, (`${curr.name}, ${curr.country}`)], []);
      console.log(custom);

      【讨论】:

        【解决方案4】:

        使用 forEach 的简单解决方案

        countries = [
          {country: "Andorra", geonameid: 3040051, name: "les Escaldes", subcountry: "Escaldes-Engordany"},
          {country: "Andorra", geonameid: 3041563, name: "Andorra la Vella", subcountry: "Andorra la Vella"},
          {country: "United Arab Emirates", geonameid: 290594, name: "Umm al Qaywayn", subcountry: "Umm al Qaywayn"},
          {country: "United Arab Emirates", geonameid: 291074, name: "Ras al-Khaimah", subcountry: "Raʼs al Khaymah"}
        ]
        
        let arr = [];
        
        let result = [];
        
        countries.forEach((country, index) => {
            let nameStr = `${country.name}, ${country.country}`
            result.push(nameStr);
        })
        
        console.log(result)
        
        //output
        //["les Escaldes Andorra", "Andorra la Vella Andorra", "Umm al Qaywayn United Arab Emirates", "Ras al-Khaimah United Arab Emirates"]

        【讨论】:

          猜你喜欢
          • 2022-11-02
          • 2019-10-08
          • 2019-06-13
          • 2017-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-21
          相关资源
          最近更新 更多