Javascript数组修改



我有一个像这样的对象数组:

[{year: "1920", count: 0}, {year: "1921", count: 2}, {year: "1925", count: 0}, {year: "1930", count: 21}, ....]

我想,基于开始年份(例如。1900年)和结束年份(例如:2000)用对象({year: year-, count: 0})填充数组中介于两者之间的所有年份,因此在上面的示例中,将添加1900到1920之间的年份,以及1921-1925,1925-1930和1930-2000。

有谁有类似的问题,可以帮助吗?非常感谢!

编辑:到目前为止,我所尝试的是一个简单的for循环,检查每次迭代,如果年份在数组中。但我觉得这不是一个好的和有效的方法来解决它

您可以首先从current years数组创建一个对象,并生成新的数组,同时检查该对象中是否存在年份:

const presentYear = [{year: "1920", count: 0}, {year: "1921", count: 2}, {year: "1925", count: 0}, {year: "1930", count: 21}];
const presentYearObj = Object.fromEntries(presentYear.map(k=>[k.year, k]));
const allData = Array.from({length:101}, (_,i)=>presentYearObj[`${1900+i}`] || ({year:`${1900+i}`, count:0}));
console.log(allData);


let arrs =
[
{year: "1920", count: 0},
{year: "1921", count: 2},
{year: "1925", count: 0},
{year: "1930", count: 21}
]
let arr2 = arrs.map(it => {
return +it.year
})
console.log(arr2)
for (let i = 1900; i < 2000; i++) {
if (!arr2.includes(i)) {
arrs.push({year: i + '', count: 0})
}
}
console.log(arrs.length)

function fillYears(from, to, existingArray) {

let existingObject = {};
existingArray.map(x => existingObject[x.year] = x.count);

let yearsArray = [];
for (let i = from; i <= to; i++) {
yearsArray.push({ 
year: i.toString(), 
count: existingObject[i] || 0
});
}

return yearsArray;

}
let arrYears = [
{ year: "1920", count: 0},
{ year: "1921", count: 5},
{ year: "1925", count: 0},
{ year: "1930", count: 10}
];
arrYears = fillYears(1900, 2000, arrYears);
console.log( arrYears );

这个函数创建一个新数组,完成现有数组的计数值。

最新更新