2014-04-26 53 views
0

我希望通过匹配它们的公共属性将数组作为proproties放入其他数组中。我希望jobDetails的uid能够与作业的uid匹配。可能?复杂的分组和合并数组作为属性

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 
    }] 

}]; 
+0

复制使用嵌套循环的复杂数组合并(http://stackoverflow.com/q/23308541/218196)。多个用户帐户或作业? –

回答

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); 
+0

这是史诗! – user3522457

+0

等待,它可以在PHP版本?因为我想在后端,相同的逻辑? – user3522457

+0

当然..没有区别.. :) –

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工具带照顾一些繁重的工作,而且它使代码多一点愉快的阅读相比干循环读取。

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(阵列));