如何在javascript中获取json对象的对

时间:2017-07-10 10:42:15

标签: javascript json object

data = 
   {"user" : [
    {
        "id"   : 1,
        "name" : "jeboo",
        "level": 1          
    },
    {
        "id"   : 2,
        "name" : "yoyo",
        "level": 1
    },
    {
        "id"   : 3,
        "name" : "yaya",
        "level": 2          
    },
    {
        "id"   : 4,
        "name" : "yeye",
        "level": 2
    },
    {
        "id"   : 5,
        "name" : "yiyi",
        "level": 3      
    },
    {
        "id"   : 6,
        "name" : "jebee",
        "level": 3          
    }
]}

这就是我如何获得json对象

var obj = JSON.stringify(data);
var parse = JSON.parse(obj);                
$.each(parse, function(key, object) {                                    
  $.each(object, function(index, val) {
     console.log(index, val);                        
  });                    
});

我的目的是想在下面生成数组

对象0 +对象1 =第一对

对象2 +对象3 =第二对

对象4 +对象5 =第三对

1 个答案:

答案 0 :(得分:0)

假设您想要成对具有相同level的对象, 您可以使用Array#reduce来实现此目的:

var data = 
   {"user" : [
    {
        "id"   : 1,
        "name" : "jeboo",
        "level": 1          
    },
    {
        "id"   : 2,
        "name" : "yoyo",
        "level": 1
    },
    {
        "id"   : 3,
        "name" : "yaya",
        "level": 2          
    },
    {
        "id"   : 4,
        "name" : "yeye",
        "level": 2
    },
    {
        "id"   : 5,
        "name" : "yiyi",
        "level": 3      
    },
    {
        "id"   : 6,
        "name" : "jebee",
        "level": 3          
    }
]};

var r = data.user.reduce(function(res, obj) {
  res[obj.level - 1] = res[obj.level - 1] || [];
  res[obj.level - 1].push(obj);
  return res;
}, []);

console.log(r);

修改

如果要根据对象在数组中的位置配对并独立于level属性,则可以使用回调的index参数和一些数学运算:

var r = data.user.reduce(function(res, obj, idx) {
  res[Math.floor(idx/2)] = res[Math.floor(idx/2)] || [];
  res[Math.floor(idx/2)].push(obj);
  return res;
}, []);