Jquery 比较两个数组并创建第三个数组

Jquery 比较两个数组并创建第三个数组,jquery,arrays,Jquery,Arrays,我尝试比较两个数组并创建第三个数组 我的第一个阵列: 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]]

我尝试比较两个数组并创建第三个数组

我的第一个阵列:

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

您当前正在将
sevenDays
中的index
i
中的值与
json[0]
的index
i
处的对象的
value
属性进行比较,但这是不正确的,因为顺序不匹配。
09
的值位于
json[0]
的索引2,但
09
的值位于
sevenDays
的索引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];
});

看看。

考虑使用正确的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 :)
}
}
}

您应该创建一个易于测试的语法。for(x in y)语法用于迭代对象的属性,而不是数组。我现在就知道了:)。非常感谢你!(每个函数中的每个都不应该是问题?@InTry嵌套
每个
函数都不会引起问题,只要您选择唯一的变量名以避免阴影。