我需要转换它:
"colors":["pink", "Blue"]
或只是这个
["pink", "Blue"]
进入这个
[{ colors: "pink" }, { colors: "blue" }]
以便能够在AngularJS中使用它。有没有办法用underscore.js做到这一点?提前谢谢!
答案 0 :(得分:6)
Underscore提供了_.map()
方法,可让您完成您正在寻找的内容。
var arr = ['pink','blue'];
var hash = _.map(arr, function(color){ return {colors: color};});
但是,undercore的map方法只是javascript中原生Array#map
方法的一个瘦包装器,可以按如下方式使用:
var arr = ['pink', 'blue'];
var hash = arr.map(function(color){ return {colors: color}; });
答案 1 :(得分:2)
var newArray = new Array();
colors.forEach(function(item) {
newArray.push({colors: item});
});
答案 2 :(得分:1)
通常,如果您有这样的对象:
var obj = {
key1: ['val1_1', 'val1_2'],
key2: ['val2_1', 'val2_2']
}
你希望得到这样的东西:
var arr = [{key1: 'val1_1'}, {key1: 'val1_2'}, {key2: 'val2_1'}, {key2: 'val2_2'}]
出来了。
var arr = Object.keys(obj).map(function(key){
return obj[key].map(function(item){
var result = {};
result[key] = item;
return result;
})
}).reduce(function(prevArray, newArray){
return prevArray.concat(newArray);
}, []);
或者如果您希望结果如下:
var arr = [[{key1: 'val1_1'}, {key1: 'val1_2'}], [{key2: 'val2_1'}, {key2: 'val2_2'}]]
只需删除连接所有数组的最后一部分(.reduce(...)
)。