gpt4 book ai didi

javascript - 如何向对象添加键值对?

转载 作者:行者123 更新时间:2023-12-01 02:03:41 25 4
gpt4 key购买 nike

我有一个dates数组,我正在尝试创建一个带有键/值对的对象。月份名称将是键,日期将是值。

在下面的代码中,它打印一个空对象。知道缺少什么来实现:

{
'may': ['2018/05/24', '2018/05/30']
}

main.ts

const arr = ["2018/05/24","2018/05/30"]    
private buildObject(obj) {
const _obj = obj;
let dateObject = {};
_obj.forEach((element) => {
const d = new Date(element);
const m = monthNames[d.getMonth()];
for (const key in dateObject){

if (_obj) {
dateObject[key] = Object.assign({}, {[m]: element});
}
}

})

console.log("____DATES", dateObject);
return dateObject;
}

console.log(this.buildObject(arr));

最佳答案

这段代码完全是错误的。

  • 循环永远不会执行,因为您的对象是空的。
  • if 语句是不必要的,因为 _obj 始终是一个数组。
  • 列表项 Object.assign({}, {[m]: element}); 不必要地将新对象合并到空对象中。这和直接写 {[m]: element} 是一样的。

由于您没有解释输出应该是什么,我只能假设您想要将月份名称映射到日期列表。以下代码执行此操作:

const monthNames = {4: "May"};
const arr = ["2018/05/24","2018/05/30"];
const dateObject = {};

for (const dateString of arr) {
const date = new Date(dateString);
const month = monthNames[date.getMonth()];
if (dateObject[month]) {
dateObject[month].push(dateString);
} else {
dateObject[month] = [dateString];
}
}
console.log(dateObject);

<小时/>

通用的“分组依据”函数:

function groupBy(arr, keyFunc) {
const result = {};
for (const value of arr) {
const key = keyFunc(value);
if (result[key]) {
result[key].push(value);
} else {
result[key] = [value];
}
}
return result;
}

用作

const dateObject = groupBy(
arr,
dateString => monthNames[new Date(dateString).getMonth()],
);

关于javascript - 如何向对象添加键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50298523/

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