使用 lodash 从数组中返回对象键和值

aki*_*ide 3 javascript lodash

我有这个 Array,我需要取出每个nameage值,然后将name值设为新键,将age值设为新值。

数组

var arr = [
 {name: "jack", age: 32 },
 {name: "jane", age: 34 }
]
Run Code Online (Sandbox Code Playgroud)

我之前的代码

var monthlyProfit = _.map(arr, function(v) {
  var obj = {
    v.name: v.age
  };

  return obj;
});

console.log(monthlyProfit) // Error
Run Code Online (Sandbox Code Playgroud)

期待

var arr = [
 {jack: 32},
 {jane: 34}
]
Run Code Online (Sandbox Code Playgroud)

我正在使用 lodash,但 vanilla JS 不会有问题。

Tex*_*Tex 6

您当前尝试定义属性的方式将不起作用。有多种方法可以实现您想要实现的目标,但我通常会这样做(使用 ES5):

var monthlyProfit = _.map(arr, function(v) {
  return {[v.name]  : v.age};
});
Run Code Online (Sandbox Code Playgroud)

或者像这样,作为 ES6 one-liners:

//using lodash
var monthlyProfit = _.map(arr, ({ name, age }) => ({ [name]: age }))

//or, pure ES6 without lodash:
var monthlyProfit = arr.map(({ name, age }) => ({ [name]: age }))
Run Code Online (Sandbox Code Playgroud)

您应该看到Syntax Error: Unexpected token .在当前代码中创建对象的行。