2013-03-05 5 views
5

私は三番目二つの配列を比較して、作成する第三1

私の最初の配列を比較して作成しようとした二つの配列があります。

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

私はあなたが現在のインデックスjson[0]iでオブジェクトのvalueプロパティにsevenDaysインデックスiから値を比較している。この

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

のようにそれを行うことができます。 –

答えて

5

ようにしようとしたが、順序が一致しないので、それは正しくないのです。 09の値はjson[0]のインデックス2ですが、09のインデックス2はsevenDaysです。

ので、同様にあなたは、一致するオブジェクトを見つけるためにjson[0]sevenDaysを反復処理する必要があり、各繰り返し反復処理のためでしょう:

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を見てみましょう。適切なJSON形式であなたの二番目の配列を考慮し

+0

私は今それを得た:)。どうもありがとうございました! – InTry

+0

@InTryネストされた 'each'関数は、シャドウイングを避けるために一意の変数名を選んだら、問題を引き起こすことはありません。 –

0

....

あなたは簡単にテスト用http://jsfiddle.net/を作成する必要があります。この

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)'構文は、配列全体ではなく、オブジェクトのプロパティを反復するためのものです。 –

+0

これを編集しました...これでうまくいきます... – 1and0

関連する問題