2015-09-29 47 views
3

我有一個數組和一個對象。我應該將Array值與對象鍵進行比較。如果兩者都匹配,我應該將對象的值推入數組中。比較陣列值與對象鍵,並將值設置爲數組

我用下面的邏輯實現了這個。

var arr = [{ "name": "Coal", "segmentId": null }, { "name": "Ash", "segmentId": null }]; 
 

 
    var obj = { 
 
     "Ash": { 
 
      "October 2015": "66", 
 
      "segmentId": "66", 
 
      "December 2015": "435", 
 
      "November 2015": "34535" 
 
     }, 
 
     "Coal": { 
 
      "October 2015": "23455", 
 
      "segmentId": "66", 
 
      "November 2015": "3454", 
 
      "December 2015": "345" 
 
     } 
 
    }; 
 

 
    document.writeln("Original Array : " + JSON.stringify(arr)); 
 

 
    for (var i = 0; i < arr.length; i++) { 
 
     var keys = Object.keys(obj); 
 
     for (var j = 0; j < keys.length; j++) { 
 
      if (arr[i].name === keys[j]) { 
 
       arr[i].segmentId = obj[keys[j]].segmentId; 
 
      } 
 
     } 
 
    } 
 

 
    document.writeln("Transformed Array : " + JSON.stringify(arr));

我想知道,是否有任何其他處理這種最好的方式或任何JS庫,使之簡單?

Fiddler Version

+0

也許看看http://underscorejs.org/ – ergonaut

+0

你可以創建jsfiddle嗎? –

+0

請在這裏查看我們的提琴手[jsfiddler](http://jsfiddle.net/b3r75r8x/) –

回答

2

用JavaScript高階函數試試這個:

arr.map(function(item){ 
    item["segmentId"] = obj[item["name"]]["segmentId"] 
}); 
+0

我將兩個對象定義爲undefined – forgottofly

+1

什麼對象是未定義的? http://jsfiddle.net/cue7pox7/ –

+0

請編輯您的答案,以便我可以upvote – forgottofly

0

雖然你還沒有提供fiddle.But你可以做jQuery中象下面這樣:

請注意我爲結果集創建一個新數組。

var arr = [{ "name": "Coal", "segmentId": null }, { "name": "Ash", "segmentId": null }]; 
var obj = { 
     "Ash": { 
      "October 2015": "66", 
      "segmentId": "66", 
      "December 2015": "435", 
      "November 2015": "34535" 
     }, 
     "Coal": { 
      "October 2015": "23455", 
      "segmentId": "69", 
      "November 2015": "3454", 
      "December 2015": "345" 
     } 
    }; 

var a=[]; 
$.each(arr, function(i, v) { 
    $.each(obj, function(oi, ov) {  
     if(arr[i].name==oi)    
      a.push(obj[oi].segmentId);   
    }); 
}); 


alert(a.length); 
+0

爲什麼我會使用jQuery進行普通的舊循環? –

+0

嗨@torazaburo OP提到了最好的方式或任何js庫。所以我認爲他對jquery開放。他正在尋找最好的方法。我已經向他展示了一種方法。當然,它可以進一步減少到一個班輪但我現在沒有多少時間在這件事上花時間,以後再看 –