2013-03-05 51 views
5

我有兩個數組,我想比較,並創建第三個比較兩個數組,並創建第三個

我的第一個數組:

sevenDays = ["04","05","06","07","08","09","10"]; 

我的第二個數組:

json[0] = [Object{day="04",value="5"}, Object { day="05",value="8"}, Object { day="09",value="9"}] 

什麼我試圖得到的是:

[[04,5],[05,8],[06,0],[07,0],[08,0],[09,9],[10,0]] 

我試着這樣

var desiredArray= [];       
$.each(sevenDays, function (i, v) { 
    val= 0; 
    if (json[0][i].value) val = json[0][i].value; 
    desiredArray[i] = [v, val] 
}); 


[[04,5],[05,8],[06,9],[07,0],[08,0],[09,0],[10,0]] //output 
+0

您應該創建簡單的測試一個http://jsfiddle.net/。 – 2013-03-05 12:48:16

回答

5

你目前從指數isevenDays在指數json[0]i比較值對象的value屬性,但是這並不正確,因爲該命令不匹配。 09的值在json[0]的索引2處,但09sevenDays的索引5處。

你需要遍歷sevenDays,併爲每個迭代疊代json[0]找到匹配的對象,像這樣:

var desiredArray = []; 

$.each(sevenDays, function (i, day) { 
    val = 0; 
    $.each(json[0], function(j, value) { 
     if(day == value.day) 
      val = value.value; 
    }); 
    desiredArray[i] = [day, val]; 
}); 

this working demo看看。

+0

我明白了:)。非常感謝你! (每個都不應該是個問題?) – InTry 2013-03-05 13:11:33

+0

@InTry Nested'each'函數不會引發問題,只要您選擇唯一的變量名稱以避免產生陰影。 – 2013-03-05 13:20:59

0

考慮到你在正確的JSON格式第二陣列....

,你可以做這樣的

var data[] =["",""] 
for(value in sevenDays) 
{ 
for(Object in json[0]) 
{ 
if(Object.hasOwnProperty(data[value]) 
{ 
    // do ur stuff here :) 
} 
else 
{ 
    //do the other stuff here :) 
} 
} 
} 
+0

'for(x in y)'語法用於遍歷對象的屬性,而不是遍歷數組。 – 2013-03-05 12:54:40

+0

編輯它...現在這將工作... – 1and0 2013-03-05 13:03:08

相關問題