简体   繁体   English

如何在Lodash中将数组转换为对象?

[英]How to convert an array to an object in Lodash?

I have: 我有:

{
     dis:{["String1","String2","String3"]},
     par:"pony"
}

And I want to turn it into this: 我想把它变成这样:

[
    { name: 'String1', value: "pony" },
    { name: 'String2', value: "pony" },
    { name: 'String3', value: "pony" }
]

If you change to valid js data you can do this with reduce() 如果更改为有效的js数据,则可以使用reduce()进行此操作

 var obj = { dis: ["String1", "String2", "String3"], par: "pony" } var result = obj.dis.reduce(function(r, e) { r.push({name: e, value: obj.par}); return r; }, []); console.log(result) 

You can do it easily, but beware you have double parentheses (mustaches and square bracket). 您可以轻松完成此操作,但是请注意,您要使用双括号(小括号和方括号)。

var 
    data = {
        dis: ["String1","String2","String3"],
        par: "pony"
    }, 

  result = [];

for (var index in data.dis)
    result.push({ name: data.dis[index], value: data.par}

you can find the fiddle here . 你可以在这里找到小提琴。

You can do it using Array.protoype.map : 您可以使用Array.protoype.map做到这一点:

 var obj = { dis:["String1","String2","String3"], par:"pony" }; var arrOfObj = obj.dis.map(function(name) { return { name: name, value: obj.par } }); console.log(arrOfObj) 

Or lodash's _.map : 或lodash的_.map

 var obj = { dis:["String1","String2","String3"], par:"pony" }; var arrOfObj = _.map(obj.dis, function(name) { return { name: name, value: obj.par } }); console.log(arrOfObj); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM