我有这个Object.key
代码推送所有项目:
const cloned_items = [];
Object.keys(items).sort().map(key => {
let item = {
[`item-${uid}`]: {
item: false
}
}
cloned_items.push({ ...item });
});
database.ref('/app/items').update({
...cloned_items
})
但这会产生以下结果:
"0" : {
"timeslot-87dah2j" : {
item: false
}
},
"1" : {
"timeslot-7s1ahju" : {
item: false
}
}
而不是:
"timeslot-87dah2j" : {
item: false
},
"timeslot-7s1ahju" : {
item: false
}
任何想法?
答案 0 :(得分:1)
您似乎想要创建一个普通对象,而不是数组。
在那种情况下:
const cloned_items = Object.assign(...Object.keys(items).map(uid =>
({ [`item-${uid}`]: {item: false} })
));
注意:创建对象时排序是没有用的 - 它的键应该没有特定的顺序。
答案 1 :(得分:0)
您正在创建一个对象数组。好像你想用.reduce()
从数组中创建一个对象。
const cloned_items = Object.keys(items).sort().reduce((obj, key) =>
Object.assign(obj, { [`item-${uid}`]: { item: false } })
, {});
您的代码未显示uid
的来源,但我认为您的意思是key
,而timeslot
代替item
。
您可能会发现Object.defineProperty
更干净,但您需要根据需要设置属性描述符。
const cloned_items = Object.keys(items).sort().reduce((obj, key) =>
Object.defineProperty(obj, `item-${uid}`, {value:{item: false}})
, {});