如何将列表中的属性转换为值?

时间:2019-03-31 16:30:35

标签: javascript

有什么方法可以将对象列表转换为现在属性为值的新列表。我曾尝试使用Object.keys()Object.values()制作两个单独的列表,然后尝试将它们组合在一起,但并没有成功。

示例:

我想转身:

[{ip: 123, name: "bob"}]

进入:

[{property: "ip", value: 123}, {property: "name", value: "bob"}]

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以使用即将到来的Array#flatMap并获取对象的条目。

var data = [{ ip: 123, name: "bob" }],
    result = data.flatMap(o => Object.entries(o).map(([property, value]) => ({ property, value })));

console.log(result);

使用Array#reduce的传统方法。

var data = [{ ip: 123, name: "bob" }],
    result = data.reduce((r, o) => [
        ...r,
        ...Object.entries(o).map(([property, value]) => ({ property, value }))
    ], []);

console.log(result);

答案 1 :(得分:0)

我只是做一个for循环,遍历数组,然后将这些新对象推入新数组中。

以下代码可以解决您的问题:

const array1 = [{ ip: 123, name: 'bob' }];
let newArray;

for (let i = 0; i < array1.length; i++) {
    newArray.push({
        property: 'ip',
        value: array1[i].value
    });

    newArray.push({
        property: 'name',
        value: array1[i].name
    });
}