推送到对象而不是数组

时间:2018-11-16 05:00:46

标签: javascript underscore.js

我正在使用下划线将一些道具提取到一个单独的对象中,但是结构不是我想要的:

let element = {
    foo: 0,
    bar: 1,
    baz: _.map(
            _.filter(element.properties, (prop) => 
                _.contains(validationProps, prop.name)), (rule) => 
                    ({ [rule.name]: rule.value }) )
}

..返回baz的对象数组:

[ {"required":true} , {"maxLength":242} ]

..但是我需要的是:

{ "required":true, "maxLength":242 }

1 个答案:

答案 0 :(得分:4)

或使用JavaScript的Array.prototype.reduce()

  

reduce()方法在数组的每个成员上执行reducer函数(由您提供),从而产生单个输出值。

let data = [{
    "name": "label",
    "value": "Short 2"
  },
  {
    "name": "required",
    "value": true
  },
  {
    "name": "maxLength",
    "value": 242
  }
];

let reformatted = data.reduce((pv, cv) => {
  pv[cv.name] = cv.value;
  return pv;
}, {});

console.log(reformatted);