复杂分组和合并数组作为属性

时间:2014-04-26 09:21:22

标签: javascript json

我希望通过匹配它们的公共属性将数组作为proproties放入其他数组中。我希望jobDetails能够与职业相匹配。可能的?

var job = [{
    "uId": 1
}, {
    "uId": 2
}]

var jobDetails = [{
    "uId": 1,
    "salary": 5000
}, {
    "uId": 2,
    "salary": 5000
}]

是否有可能产生类似

的东西
var job = [{
    "uId": 1,
    "salary": [{
        "uId": 1,
        "salary": 5000
    }]
}, {
    "uId": 2,
    "salary": [{
        "uId": 2,
        "salary": 5000
    }]

}];

3 个答案:

答案 0 :(得分:2)

你可以尝试这样的事情:http://jqversion.com/#!/XWFtbQb

for (var i = 0; i < job.length; i++) {
  for (var j = 0; j < jobDetails.length; j++) {
    if (job[i].uId == jobDetails[j].uId) {
      job[i].salary = jobDetails[j];
    }
  }
}

console.log(job);

答案 1 :(得分:0)

这不是纯粹的JavaScript解决方案,但我喜欢使用underscore.js来对集合进行此类典型操作:

http://jsfiddle.net/FPwq7/

var finalCollection = []; 
_.each(job, function(model){ 
    var obj = _.findWhere(jobDetails, {uId: model.uId}); 
    _.extend(model, {'salaray': obj}); 
    finalCollection.push(model); 
}); 

console.log(finalCollection); 

我发现这个Javascript实用程序带负责一些繁重的工作,它使代码比阅读干循环更愉快。

答案 2 :(得分:0)

是的,您需要同时使用两个json对象

  var array = [];
  var object = {}
  $.each( job, function ( k , kal ) {

     $.each( jobDetails , function ( i , val) {
      object.uId = i;
      object.salary = val;
     });
     array.push(object);
});

的console.log(JSON.stringify(阵列));