我有以下输入数据:
var persons = [
{firstname : "Malcom", lastname: "Reynolds"},
{firstname : "Kaylee", lastname: "Frye"},
{firstname : "Jayne", lastname: "Cobb"}
];
我需要更改每个对象中键的值,以便预期的输出数据为:
persons = [
{fn : "Malcom", lastname: "Reynolds"},
{fn : "Kaylee", lastname: "Frye"},
{fn : "Jayne", lastname: "Cobb"}
];
我在JavaScript中使用了地图功能,但无法正常工作。
persons.map(x => x.firstname=x.fn);
答案 0 :(得分:2)
您可以将destructuring assignment与rest parameters ...
一起用于对象。然后将新属性与其余属性映射。
此建议仅适用于较新的JS或babeljs。
var persons = [{ firstname : "Malcom", lastname: "Reynolds" }, { firstname : "Kaylee", lastname: "Frye" }, { firstname : "Jayne", lastname: "Cobb" }];
console.log(persons.map(({ firstname: fn, ...rest }) => ({ fn, ...rest })));
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:1)
像这样通过返回一个新对象来使用地图。
var persons = [
{firstname : "Malcom", lastname: "Reynolds"},
{firstname : "Kaylee", lastname: "Frye"},
{firstname : "Jayne", lastname: "Cobb"}
];
const newPersons = persons.map(person=>({fn:person.firstname, ln:person.lastname}));
console.log(newPersons);
答案 2 :(得分:1)
您的想法是正确的,但需要进行一些更改:
persons = persons.map((x) => {
return {
fn : x.firstname,
lastname : x.lastname
}
})
答案 3 :(得分:1)
尝试一下:
let persons = [
{firstname : "Malcom", lastname: "Reynolds"},
{firstname : "Kaylee", lastname: "Frye"},
{firstname : "Jayne", lastname: "Cobb"}
];
let newPersons = persons.map(person => {
return ({
fn: person.firstname, lastname: person.lastname
})
})
newPersons
数组将恰好是您需要的数组。顺便说一句,我使用的是let
而不是var
。
答案 4 :(得分:1)
使用forEach()
:
var persons = [
{firstname : "Malcom", lastname: "Reynolds"},
{firstname : "Kaylee", lastname: "Frye"},
{firstname : "Jayne", lastname: "Cobb"}
];
persons.forEach((obj)=>{
obj.fn = obj.firstname;
delete obj.firstname;
});
console.log(persons);
答案 5 :(得分:1)
用法如下:
var persons = [
{firstname : "Malcom", lastname: "Reynolds"},
{firstname : "Kaylee", lastname: "Frye"},
{firstname : "Jayne", lastname: "Cobb"}
];
var result = persons.map(current => {
var obj = {};
obj.fn = current.firstname;
obj.lastname = current.lastname;
return obj;
});
console.log(result);
答案 6 :(得分:1)
您也可以使用reduce
// Given
const persons = [
{
firstname: "Malcom",
lastname: "Reynolds"
},
{
firstname: "Kaylee",
lastname: "Frye"
},
{
firstname: "Jayne",
lastname: "Cobb"
}
];
// When
const people = persons.reduce((previousValue, currentValue) => {
previousValue.push({fn: currentValue.firstname, lastname: currentValue.lastname});
return previousValue;
}, []);
// Then
console.log(people);