使用underscore.js将多个数组组合到对象集合

时间:2016-05-05 02:45:17

标签: javascript arrays underscore.js

我有一些由数组收集的信息,例如:

var names = ["Jack", "Marry", "Bob"]
var cars = ["Audi", "BMW", "Volvo"]

我希望将这些信息组合成像集合一样的对象,例如:

[{name:"Jack", car: "Audi"}, {name: "Marry", car:"BMW"}, {name:"Bob", car:"Volvo"}]

我可以通过以下步骤完成此操作:

var combine = _.zip(names, cars)
var collection= _.map(combine, function(info){
                      return _.object(["name", "car"], info);
                     });

还有其他方法可以让代码看起来更好吗? 感谢

2 个答案:

答案 0 :(得分:1)

es5 array.map()怎么样?

var names = ["Jack", "Marry", "Bob"]
var cars = ["Audi", "BMW", "Volvo"]

var result = names.map(function(val, key){
 return {name: val, car: cars[key]}
})

console.log(result); //[{car: "Audi", name: "Jack"}, {car: "BMW", name: "Marry"}, {car: "Volvo", name: "Bob"}]

P.S。如果数组的长度不同,请为case添加条件

答案 1 :(得分:0)

如果你想坚持使用下划线,你可以使用chaining组合你的两个步骤:

var result = _(names).chain()
                     .zip(cars)
                     .map(function(a) { return { name: a[0], car: a[1] } })
                     .value();
相关问题