简化数组里的对象

由于在vue里原数据使用不灵活,想转为更为简单的数据,要怎么转,请大量指点。

原数据

    var a = [{
                "name": "pmn01",
                "value": "421-17010002"
            }, {
                "name": "pmm04",
                "value": "2017/01/14"
            }, {
                "name": "pmm09",
                "value": "A0002"
            }, {
                "name": "pmn041",
                "value": "联想手机  乐檬K10"
            }]

转换为

var a = {"pmn01": "421-17010002","pmm04": "2017/01/14","pmm09": "A0002","pmn041": "联想手机  乐檬K10"}
阅读 2.8k
4 个回答
const r = a.reduce((m, item) => {
    m[item.name] = item.value;
    return m;
}, {});

clipboard.png

如果你用lodash的话可以这样:

_.merge(... _.map(a,function(row){ var o = {}; o[row.name]=row.value;return o}))

展开的话是这样的:

var tempList = _.map(a,function(row){ 
            var o = {}; 
            o[row.name]=row.value;
            return o
    });
var data = _.merge(...tempList);
console.log(data)

至于...操作符, 用vue的一般都会用webpack或babel的吧

var b = {};
a.forEach(v => {b[v.name] = v.value})

原生js就能搞定。

var result = a.reduce(function(prev, cur){
  prev[cur.name] = cur.value;
  return prev;
},{});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题