2013-03-05 76 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

相关问题