如何在JavaScript中更改地图以更改对象键

时间:2018-09-24 12:49:22

标签: javascript

我有以下输入数据:

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);

7 个答案:

答案 0 :(得分:2)

您可以将destructuring assignmentrest 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);