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

时间:2013-03-05 12:39:52

标签: 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]]

我试过这个

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

2 个答案:

答案 0 :(得分:5)

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

看看this working demo

答案 1 :(得分: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 :)
}
}
}