【问题标题】:How do I map an array of objects如何映射对象数组
【发布时间】:2016-06-17 10:55:45
【问题描述】:

我无法弄清楚这一点,而且我已经研究了好几个小时,所以假设我有一个 JSON 数组。我想将数据映射到一个新数组中。但是我卡住了,有人可以解释如何正确使用 map 与 Json 对象数组,谢谢。

var results = [{
    "userid": 1213,
    "name": "jake",
    "id": 3242,
    "state": "ny"
}, {
    "userid": 1203,
    "name": "phil",
    "id": 3142,
    "state": "ny"
}, {
    "userid": 1013,
    "name": "kate",
    "id": 3241,
    "state": "js"
}];

$.ajax({
    dataType: "json",
    data: results,
    success:function(data){
    $.map(data.results, (dat, item) {
        var array = new Array();
        var groups;
        groups = array;
        groups.a = dat.userid;
        groups.b = dat.name;
        groups.c = dat.state;
        array.push(groups);
   } })
});

【问题讨论】:

  • map 是什么意思?
  • 为什么要“映射”?您显示的代码似乎是身份。
  • 您将数组推入自身:arraygroups 引用同一个数组对象。
  • 你的代码有很多错误,我不知道你在做什么。请扩展您的问题并详细说明您的输入值是什么,以及您想要的输出应该是什么。另外,为什么会有ajax调用?转换后的数组应该是调用数据还是调用响应应该被转换?

标签: javascript jquery dictionary


【解决方案1】:

在调用 $.ajax();之前映射你的数组;

results = results.map(function(item) {
  return {
    a: item.userid,
    b: item.name,
    c: item.state;
  };
});

//DO your thing
$.ajax({
    dataType: "json",
    data: results
});

【讨论】:

    【解决方案2】:

    你只是忘记了 return 映射的 obj。

    var results = [{
      "userid": 1213,
      "name": "jake",
      "id": 3242,
      "state": "ny"
    }, {
      "userid": 1203,
      "name": "phil",
      "id": 3142,
      "state": "ny"
    }, {
      "userid": 1013,
      "name": "kate",
      "id": 3241,
      "state": "js"
    }];
    
    
    console.log($.map(results, function(dat, item) {
      var groups = {};
      groups.a = dat.userid;
      groups.b = dat.name;
      groups.c = dat.state;
      return groups;
    }));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    【讨论】:

    • 我不应该返回对象,我应该将它推入数组
    • @Newbieprogrammer,你可以在日志中看到,map 函数返回 array。如果这不是你想要的,你能提供预期的输出吗?
    【解决方案3】:

    首先,您需要将映射代码放入 ajax 回调中。然后,您可以使用 jQuery map 或 javascript map 或简单的 for 循环来遍历响应数组中的每个项目。

    $.ajax({
        dataType: "json",
        data: results,
        success: function( data )
        {
          var groups = data.map(function(currentItem){
            var group = {};
            group.a = currentItem.userid;
            group.b = currentItem.name;
            group.c = currentItem.state;
            return group;
          });
          console.log( groups );
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 2015-06-25
      • 2021-09-30
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多