gpt4 book ai didi

javascript - .fill() 相当于对象

转载 作者:行者123 更新时间:2023-11-30 11:06:03 25 4
gpt4 key购买 nike

我曾尝试使用诸如“对象的填充等价物”之类的术语进行谷歌搜索,但它坚持只向我显示数组的结果(这是有道理的,因为这是一个 array method )。

我知道如果它是一个数组,我可以做 array.fill(0, 0, 28);

但是,我想用预定数量的键填充一个对象。我可以使用类似这样的循环;

let dateObj = {};
for(let i; i < 31; i++){
// fill a key in my object with dateObj.i = ''
}

这样做,但想知道是否有更简单的方法。

我当前的对象看起来像这样;

04-Apr-19: (40) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
05-Apr-19: [{…}]

基本上,我想用它来填充过去 30 天的图表。但是,如您所见,它只包含两天的数据。因此,我需要填补其他 28/29 天。

有什么想法或者我只需要使用循环吗?

最佳答案

这是我刚刚掀起的小东西

let obj = {
'04-Apr-2019': [1, 2, 3],
'05-Apr-2019': [4, 5, 6]
};
const fillMonth = (obj) => {
// fix this - it may not be fully cross browser compatible
let d = new Date(Object.keys(obj)[0].replace(/-/g, '/'));
let year = d.getFullYear();
d.setMonth(d.getMonth() + 1);
d.setDate(0);
let last = d.getDate();
let txtMonth = d.toLocaleDateString('en', {month:'short'});
return Array.from({
length: last
}, (_, i) => ({
[`${(i+1).toString().padStart(2, '0')}-${txtMonth}-${year}`]: null
}));
};
let newObj = Object.assign({}, ...fillMonth(obj), obj);
console.log(newObj);

不过,它确实依赖于至少有一把 key

我假设您想“填满”一个月的 key

这段代码的大部分只是创建一个完整月份的“nn-mmm-yyyy”键,值为空

那么,诀窍就是,答案的核心:

let newObj = Object.assign({}, ...fillMonth(obj), obj);

使用 Object.assign 为您完成繁重的工作,首先,添加一个月中每一天的所有键 ...fillMonth(obj),然后添加原始对象,用 obj

中的值覆盖任何键

其余代码实际上只是快速破解,读取第一个键,从中获取日期,计算该月有多少天,并生成一个对象数组

关于javascript - .fill() 相当于对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55573361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com