我有一个包含对象的数组,并希望将其转换为包含相同值但键名不同的数组。 (JavaScript)
例如,一个数组
[{name: "Bob", age: 50, person: true}, {name: "Jerry", age: 20, person: true}]
成为
[{identification: "Bob", years: 50, person: true}, {identification: "Jerry", years: 20, person: true}]
答案 0 :(得分:3)
在这里使用Map功能非常完美。
const people = [
{name: "Bob", age: 50, person: true},
{name: "Jerry", age: 20, person: true}
];
const formatted = people.map((person) => ({
identification: person.name,
years: person.age,
person: person.person
});
这应该可以解决此问题。
答案 1 :(得分:0)
我认为您可以使用 map 方法,此方法返回的数组长度与要映射的数组长度相同:
const array = [{name: "Bob", age: 50, person: true}, {name: "Jerry", age: 20, person: true}];
let newKeysArray = array.map( a => {
let obj = {
identification: person.name,
years: person.age,
person: person.person
};
return obj
} );
因此,在地图内部,您需要为新对象分配所需的值,并返回该对象作为映射项。
答案 2 :(得分:0)
如果您希望在适当位置修改对象,则可以通过nverba here使用策略:
let rows = [
{name: "Bob", age: 50, person: true},
{name: "Jerry", age: 20, person: true}
];
let keyMaps = [
['name', 'identification'],
['age', 'years'],
];
for(let keyMap of keyMaps)
for(let row of rows)
delete Object.assign(row, {[keyMap[1]]: row[keyMap[0]] })[keyMap[0]];
console.log(rows);
keyMap[1]
是新密钥。 keyMap[0]
是旧密钥。 Object.assign
取旧键的值并将其放在新键中。 delete
关键字令人困惑,但不适用于整个row
。只是删除旧密钥。