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

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

你应该创建一个 http://jsfiddle.net/ 以便进行轻松的测试。 - Luis Tellez
2个回答

5
您当前正在比较sevenDays中索引i的值与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];
});

Take a look at this working demo.


我明白了:)。非常感谢!(每个中的每个不应该是问题吧?) - InTry
@InTry 嵌套的 each 函数不会引起问题,只要您选择唯一的变量名称以避免阴影。 - Anthony Grist

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 :)
}
}
}

for(x in y) 语法用于遍历对象的属性,而不是数组。 - Anthony Grist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接