我正在尝试向javascript中数组的现有键值对添加属性。具体在键上添加“ id”,在值上添加“ quantity”。
我尝试使用Object.keys(array)和Object.values(array)进行分隔,并尝试使用Object.entries(array)重建新的数组。不知道如何将所需的属性添加到数组中。非常感谢您的协助。
数组如下:
{
1: "1",
2: "1",
3: "1"
}
这是我想要达到的实际结果:
[
{
id: "1",
quantity: "1"
},
{
id: "2",
quantity: "1"
},
{
id: "3",
quantity: "1"
}
]
答案 0 :(得分:4)
假设您想要一个对象数组,可以将Object.entries()与Array.map()结合使用:
const input = {1: "1", 2: "1", 3: "1"};
let res = Object.entries(input).map(([id, quantity]) => ({id, quantity}));
console.log(res);
答案 1 :(得分:2)
当前,您的预期输出不正确,因为它是没有键的对象。相反,您可以使用数组来存储对象。
您可以使用Object.keys
从第一个对象中获取所有键,然后将它们.map()
移到包含id
(包含{{ 1}})和key
(保存quantity
(value
的值)):
obj[key]
答案 2 :(得分:1)
您可以使用for..in
循环更改对象的每个键,并将对象推入新数组。其中有id:key
和quantity:obj[key]
let obj = {
1: "1",
2: "1",
3: "1"
}
let result = []
for(let key in obj){
result.push({id:key, quantity:obj[key]});
}
console.log(result);
答案 3 :(得分:1)
在处理对象时,for in循环是您的朋友。 解决以下问题的方法:
var obj = { 1: "1", 2: "1", 3: "1"}
var newObject = [];
for(var char in obj){
newObject.push({id: char, quantity: obj[char]})
}
console.log(JSON.stringify(newObject));
享受:)