2014-04-26 54 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(陣列));