2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
遍歷數(shù)組時(shí),將每個(gè)對(duì)象分配給鍵為月份的對(duì)象。這樣,如果后一項(xiàng)與前一項(xiàng)具有相同的月份,則后一項(xiàng)將覆蓋對(duì)象上的前一項(xiàng)。
var input = [ { month: 'Jan', value: 3 },
{ month: 'Jan', value: 3.5 },
{ month: 'Feb', value: 2.1 },
{ month: 'Mar', value: 6 },
{ month: 'Apr', value: 4.3 },
{ month: 'May', value: 5.5 },
{ month: 'Jun', value: 7 },
{ month: 'Jun', value: 9 },
{ month: 'Jul', value: 7 },
{ month: 'Jul', value: 9 },
{ month: 'Jul', value: 7 },
{ month: 'Aug', value: 9 },
{ month: 'Sep', value: 9 },
{ month: 'Sep', value: 9 },
{ month: 'Oct', value: 8 },
{ month: 'Oct', value: 5 },
{ month: 'Oct', value: 3 },
{ month: 'Nov', value: 12 },
{ month: 'Nov', value: 19.5 }
];
const obj = {};
for (const item of input) {
obj[item.month] = item;
}
const output = Object.values(obj);
console.log(output);

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果月份的順序是連續(xù)的,您可以按如下方式使用 reduce:
const input = [{ month: 'Jan', value: 3 }, { month: 'Jan', value: 3.5 }, { month: 'Feb', value: 2.1 }, { month: 'Mar', value: 6 }, { month: 'Apr', value: 4.3 }, { month: 'May', value: 5.5 }, { month: 'Jun', value: 7 }, { month: 'Jun', value: 9 }, { month: 'Jul', value: 7 }, { month: 'Jul', value: 9 }, { month: 'Jul', value: 7 }, { month: 'Aug', value: 9 }, { month: 'Sep', value: 9 }, { month: 'Sep', value: 9 }, { month: 'Oct', value: 8 }, { month: 'Oct', value: 5 }, { month: 'Oct', value: 3 }, { month: 'Nov', value: 12 }, { month: 'Nov', value: 19.5 }];
const result = [];
input.reduce((a, v, i) => {
const eleIdx = a.findIndex(e => e.month === v.month);
if (eleIdx > -1 && input[i - 1].month === v.month) {
a[eleIdx].value = v.value;
} else {
a.push(v);
}
return a;
}, result);
console.log(result);
添加回答
舉報(bào)