如何映射对象数组

时间:2016-06-17 10:55:45

标签: javascript jquery dictionary

我无法解决这个问题,而且我已经使用了几个小时,所以假设我有一个JSON数组。我想将数据映射到一个新的数组。但是我被卡住了,有人可以解释如何正确地使用一个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);
   } })
});

3 个答案:

答案 0 :(得分:1)

首先,您需要将映射代码放在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 );
    }
});

答案 1 :(得分: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 :(得分:1)

你忘了 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>