我有一个对象数组,每个对象包含2个属性,month&计数。 count的默认值为0.我有另一个对象数组,我从具有不同计数值的json文件中提取。我试图将第二个数组的计数值替换为第一个。
例如
array1[
{
month:1,
count:0
},
{
month:2,
count:0
},
{
month:3,
count:0
}
{
month:4,
count:0
}
etc...
]
array2[
{
month:1,
count:5
},
{
month:2,
count:3
},
{
month:3,
count:9
}
{
month:5,
count:4
}
etc...
]
我的问题是我的第二个数组较短,因为有几个月缺失(由于db中没有它们的值)在这种情况下我想跳过并转到下一个对象。所以最终结果看起来像这样,
array1[
{
month:1,
count:5
},
{
month:2,
count:3
},
{
month:3,
count:9
},
{
month:4,
count:0
}
{
month:5,
count:4
}
etc...
]
我的代码到目前为止
var array1 = [];
for (var i = 1; i <= 12; i++) {
array1.push({
month: i,
count: 0
})
}
$.getJSON(url, function (data) {
for (var i = 0; i < data.length; i++) {
if (array1[i].month == data[i].month) { //work until month 4
array1[i].count = data[i].count
}
});
console.log(array1);
答案 0 :(得分:1)
如果你的数组中一年中的总是,那么你可以使用月份作为原始数组的索引,并在必要时进行更新。
for (var i = 0; i < data.length; i++) {
array1[data[i].month - 1].count = data[i].count;
}
答案 1 :(得分:1)
结果将在第一个数组中:
function mergeArrays(arr1, arr2) {
arr1.forEach(function(item1) {
var item2 = arr2.find(function (item2) {
return item2.month === item1.month;
});
if (item2) {
Object.assign(item1, item2);
}
})
}