【问题标题】:how to loop and save values in array from JSON [duplicate]如何从JSON循环和保存数组中的值[重复]
【发布时间】:2018-05-02 13:20:05
【问题描述】:

我正在尝试从外部 json 文件中获取值并将一些值保存在数组中。我的代码:

$.getJSON("https://link.to.my.json", function(data) {
    console.log(data); // this will show the info it in  console
});

所以我可以从 json 获取数据,但我不确定如何将名字和姓氏添加到数组 [bob rooppo,peter sticker]。任何帮助,将不胜感激 和我的 json:

{
  "users": [
    {
      "test": "123",
      "name": {
        "first": "bob",
        "last": "roppo"
      },
      "email": "bob@gmail.com",
      "phone": "+123456789"
    },
    {
      "test": "124",
      "name": {
        "first": "peter",
        "last": "sticer"
      },
      "email": "peter@gmail.com",
      "phone": "+123456789"
    }
  ]
}

【问题讨论】:

    标签: javascript arrays json ajax


    【解决方案1】:

    您可以简单地使用Array#map

    data.users.map(e =>
      (e.name.first ? e.name.first : '') + //Handles the first name
      (e.name.first ? ' ' : '') +          //Space between the names
      (e.name.last ? e.name.last : '')     //Handles the last name
    );
    

    演示:

    const data = {
      "users": [
        {
          "test": "123",
          "name": {
            "first": "bob",
            "last": "roppo"
          },
          "email": "bob@gmail.com",
          "phone": "+123456789"
        },
        {
          "test": "124",
          "name": {
            "first": "peter",
            "last": "sticer"
          },
          "email": "peter@gmail.com",
          "phone": "+123456789"
        }
      ]
    };
    
    let result = data.users.map(e => (e.name.first ? e.name.first : '') + (e.name.first ? ' ' : '') + (e.name.last ? e.name.last : ''));
    console.log(result);

    【讨论】:

      【解决方案2】:

      您可以使用map

      data.users.map( s => ( s.name.first || "" ) + " " + ( s.name.last || "" ) );
      

      如果两个属性值都会一直存在,那么就不需要短路

      data.users.map( s => s.name.first + " " +s.name.last );
      

      演示

      var data = {
        "users": [
          {
            "test": "123",
            "name": {
              "first": "bob",
              "last": "roppo"
            },
            "email": "bob@gmail.com",
            "phone": "+123456789"
          },
          {
            "test": "124",
            "name": {
              "first": "peter",
              "last": "sticer"
            },
            "email": "peter@gmail.com",
            "phone": "+123456789"
          }
        ]
      };
      
      var output =   data.users.map( s => s.name.first + " " + s.name.last );
      
      console.log(output);

      【讨论】:

      • 别忘了名字和姓氏之间的空格;)
      【解决方案3】:

      您可以使用forEach()

      var json = {
        "users": [
          {
            "test": "123",
            "name": {
              "first": "bob",
              "last": "roppo"
            },
            "email": "bob@gmail.com",
            "phone": "+123456789"
          },
          {
            "test": "124",
            "name": {
              "first": "peter",
              "last": "sticer"
            },
            "email": "peter@gmail.com",
            "phone": "+123456789"
          }
        ]
      }
      
      var res = [];
      json.users.forEach(function(p){
        var name = p.name.first + ' ' + p.name.last;
        res.push(name);
      });
      console.log(res);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 2019-07-08
        • 2017-02-23
        • 1970-01-01
        • 1970-01-01
        • 2020-07-03
        相关资源
        最近更新 更多