向数组键值对添加属性

时间:2019-02-18 05:15:23

标签: javascript

我正在尝试向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"
    }
]

4 个答案:

答案 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(保存quantityvalue的值)):

obj[key]

答案 2 :(得分:1)

您可以使用for..in循环更改对象的每个键,并将对象推入新数组。其中有id:keyquantity: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));

享受:)