从对象数组中获取多个属性并形成一个新属性:Javascript

时间:2019-07-16 12:40:44

标签: javascript ecmascript-6

尝试做以下事情:

我有一个对象数组,


var arr = [
  { key: "aabFaa", text: "aabFaa" ,field: "firstName",checked: true},
  { key: "aAaaaa", text: "aAaaaa", field: "firstName", checked: true },
];

想要从中获取“文本”和“字段”,并形成一个新的对象数组,如下所示:

result = [ { "field" : "firstName" , value : "aabFaa" , type :"add"}, 
           { "field" : "firstName" , value : "aAaaaa" , type: "add"}
         ]  

这里的类型是硬编码的,其余的则从“ arr”中获取

最简单的方法是什么?

尝试过:

var arr = [
  { key: "aabFaa", text: "aabFaa" ,field: "firstName",checked: true},
  { key: "aAaaaa", text: "aAaaaa", field: "firstName", checked: true },
];

let result = arr.map(a => a.text); 
console.log(result)

但这必须多行编写才能获得所需的属性。有没有更简单的方法?

3 个答案:

答案 0 :(得分:4)

mapObject Destructuring一起使用。

var arr = [
    { key: "aabFaa", text: "aabFaa" ,field: "firstName",checked: true},
    { key: "aAaaaa", text: "aAaaaa", field: "firstName", checked: true },
  ];

const output = arr.map(({field, text}) => ({field, value: text, type: "add"}));

console.log(output);

答案 1 :(得分:1)

使用地图似乎是一种好方法,但是您将返回一个新对象,而不仅仅是一个属性:

let result = arr.map(a => ({value: a.text, type: 'add', field: a.field}));

答案 2 :(得分:0)

let result = arr.map(obj => ({
    field: obj.field,
    value: obj.text,
    type: "add"
}));