与另一个数组比较后如何添加缺失对象的值?
How to add value of missing object after comparing to another array?
我有一个月份数组 (var months
),我试图过滤掉并获取对象数组 (var array1
) 没有的月份并添加空值属性Avg
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var array1 = [{Month: 'Jan', Avg: 10},{Month: 'Feb', Avg: 20},
{Month: 'May', Avg: 50},{Month: 'Jun', Avg: 60}];`
例如。 array1
的 属性 值为 Month:
Jan
、Feb
、May
和 Jun
,但我想获取月份将缺少的月份的值添加到 属性 Avg
,例如 {Month: 'Mar', Avg: 0}, {Month: 'Apr', Avg: 0}, ...
,将其与 months
数组
进行比较
array1 的预期结果:
[{Month: 'Jan', Avg: 10}, {Month: 'Feb', Avg: 20},
{Month: 'Mar', Avg: 0}, {Month: 'Apr', Avg: 0},
{Month: 'May', Avg: 50}, {Month: 'Jun', Avg: 60},
{Month: 'Jul', Avg: 0}, {Month: 'Aug', Avg: 0},
{Month: 'Sep', Avg: 0}, {Month: 'Oct', Avg: 0},
{Month: 'Nov', Avg: 0}, {Month: 'Dec', Avg: 0}];
我认为这应该很管用!
var months = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
];
var array1 = [{
Month: "Jan",
Avg: 10
},
{
Month: "Feb",
Avg: 20
},
{
Month: "May",
Avg: 50
},
{
Month: "Jun",
Avg: 60
},
];
let finalArr = [];
months.filter((e) => {
let index = array1.findIndex((ele) => ele.Month == e);
if (index >= 0) {
finalArr.push(array1[index]);
} else {
finalArr.push({
Month: e,
Avg: 0
});
}
});
console.log(finalArr);
将 Array.map
与 Array.find
结合使用
const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const array1 = [{Month: 'Jan', Avg: 10},{Month: 'Feb', Avg: 20},
{Month: 'May', Avg: 50},{Month: 'Jun', Avg: 60}];
const result = months.map(m => array1.find(a => a.Month === m)??{Month: m, Avg: 0});
console.log(result);
我有一个月份数组 (var months
),我试图过滤掉并获取对象数组 (var array1
) 没有的月份并添加空值属性Avg
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var array1 = [{Month: 'Jan', Avg: 10},{Month: 'Feb', Avg: 20},
{Month: 'May', Avg: 50},{Month: 'Jun', Avg: 60}];`
例如。 array1
的 属性 值为 Month:
Jan
、Feb
、May
和 Jun
,但我想获取月份将缺少的月份的值添加到 属性 Avg
,例如 {Month: 'Mar', Avg: 0}, {Month: 'Apr', Avg: 0}, ...
,将其与 months
数组
array1 的预期结果:
[{Month: 'Jan', Avg: 10}, {Month: 'Feb', Avg: 20},
{Month: 'Mar', Avg: 0}, {Month: 'Apr', Avg: 0},
{Month: 'May', Avg: 50}, {Month: 'Jun', Avg: 60},
{Month: 'Jul', Avg: 0}, {Month: 'Aug', Avg: 0},
{Month: 'Sep', Avg: 0}, {Month: 'Oct', Avg: 0},
{Month: 'Nov', Avg: 0}, {Month: 'Dec', Avg: 0}];
我认为这应该很管用!
var months = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
];
var array1 = [{
Month: "Jan",
Avg: 10
},
{
Month: "Feb",
Avg: 20
},
{
Month: "May",
Avg: 50
},
{
Month: "Jun",
Avg: 60
},
];
let finalArr = [];
months.filter((e) => {
let index = array1.findIndex((ele) => ele.Month == e);
if (index >= 0) {
finalArr.push(array1[index]);
} else {
finalArr.push({
Month: e,
Avg: 0
});
}
});
console.log(finalArr);
将 Array.map
与 Array.find
const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const array1 = [{Month: 'Jan', Avg: 10},{Month: 'Feb', Avg: 20},
{Month: 'May', Avg: 50},{Month: 'Jun', Avg: 60}];
const result = months.map(m => array1.find(a => a.Month === m)??{Month: m, Avg: 0});
console.log(result);