如何在JavaScript中使映射更改对象键

如何在JavaScript中使映射更改对象键,javascript,Javascript,我有以下输入数据: var persons = [ {firstname : "Malcom", lastname: "Reynolds"}, {firstname : "Kaylee", lastname: "Frye"}, {firstname : "Jayne", lastname: "Cobb"} ]; 我需要更改每个对象中键的值,以便预期的输出数据为: persons = [ {fn : "Malcom", lastname: "Reynolds"},

我有以下输入数据:

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中使用map函数,但它不起作用

persons.map(x => x.firstname=x.fn);

通过返回一个新对象,像这样使用map

var个人=[
{姓:“马尔科姆”,姓:“雷诺兹”},
{姓:“凯莉”,姓:“弗莱”},
{姓:“詹”,姓:“科布”}
];
const newPersons=persons.map(person=>({fn:person.firstname,ln:person.lastname}));

控制台日志(newPersons)通过返回新对象像这样使用map

var个人=[
{姓:“马尔科姆”,姓:“雷诺兹”},
{姓:“凯莉”,姓:“弗莱”},
{姓:“詹”,姓:“科布”}
];
const newPersons=persons.map(person=>({fn:person.firstname,ln:person.lastname}));

控制台日志(newPersons)您的想法是对的,但需要稍微改变一下:

persons = persons.map((x) => {
  return {
    fn : x.firstname,
    lastname : x.lastname
  }
})

你的想法是对的,但需要稍微改变一下:

persons = persons.map((x) => {
  return {
    fn : x.firstname,
    lastname : x.lastname
  }
})
试试这个:

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

试试这个:

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

使用
forEach()

var个人=[
{姓:“马尔科姆”,姓:“雷诺兹”},
{姓:“凯莉”,姓:“弗莱”},
{姓:“詹”,姓:“科布”}
];
persons.forEach((obj)=>{
obj.fn=obj.firstname;
删除obj.firstname;
});
控制台日志(人)使用
forEach()

var个人=[
{姓:“马尔科姆”,姓:“雷诺兹”},
{姓:“凯莉”,姓:“弗莱”},
{姓:“詹”,姓:“科布”}
];
persons.forEach((obj)=>{
obj.fn=obj.firstname;
删除obj.firstname;
});
控制台日志(人)使用方法如下:

var个人=[
{姓:“马尔科姆”,姓:“雷诺兹”},
{姓:“凯莉”,姓:“弗莱”},
{姓:“詹”,姓:“科布”}
];
var result=persons.map(当前=>{
var obj={};
obj.fn=current.firstname;
obj.lastname=current.lastname;
返回obj;
});
控制台日志(结果)使用方法如下:

var个人=[
{姓:“马尔科姆”,姓:“雷诺兹”},
{姓:“凯莉”,姓:“弗莱”},
{姓:“詹”,姓:“科布”}
];
var result=persons.map(当前=>{
var obj={};
obj.fn=current.firstname;
obj.lastname=current.lastname;
返回obj;
});
控制台日志(结果)可以对对象使用with。然后将新属性映射到其余属性

此建议仅适用于较新的JS或

var persons=[{firstname:“Malcom”,lastname:“Reynolds”},{firstname:“Kaylee”,lastname:“Frye”},{firstname:“Jayne”,lastname:“Cobb”}];
log(persons.map({firstname:fn,…rest})=>({fn,…rest}))
.as控制台包装{max height:100%!important;top:0;}
您可以使用with for对象。然后将新属性映射到其余属性

此建议仅适用于较新的JS或

var persons=[{firstname:“Malcom”,lastname:“Reynolds”},{firstname:“Kaylee”,lastname:“Frye”},{firstname:“Jayne”,lastname:“Cobb”}];
log(persons.map({firstname:fn,…rest})=>({fn,…rest}))
.as控制台包装{max height:100%!important;top:0;}
您也可以使用

//给定
警察人员=[
{
名字:“马尔科姆”,
姓:“雷诺兹”
},
{
名字:“凯莉”,
姓:“弗莱”
},
{
名字:“Jayne”,
姓:“科布”
}
];
//什么时候
const people=persons.reduce((以前的值,当前值)=>{
push({fn:currentValue.firstname,lastname:currentValue.lastname});
返回以前的值;
}, []);
//然后
console.log(人)您也可以使用

//给定
警察人员=[
{
名字:“马尔科姆”,
姓:“雷诺兹”
},
{
名字:“凯莉”,
姓:“弗莱”
},
{
名字:“Jayne”,
姓:“科布”
}
];
//什么时候
const people=persons.reduce((以前的值,当前值)=>{
push({fn:currentValue.firstname,lastname:currentValue.lastname});
返回以前的值;
}, []);
//然后

console.log(人)
是否要更改现有对象或具有新对象的新数组?可能
map
不是您需要的新数组或其他方法,但必须以有效的方式更改上面的键是否要更改现有对象或具有新对象的新数组?可能
map
不是您需要的方法需要新的数组或任何东西,但输出应该像上面的键必须以有效的方式进行更改