反对我需要转换成这样:Underscore.js - 阵列与相同的密钥
"colors":["pink", "Blue"]
或者干脆此
["pink", "Blue"]
这个
[{ colors: "pink" }, { colors: "blue" }]
为了能够在AngularJS中使用它。有没有办法使用underscore.js来做到这一点?提前致谢!
反对我需要转换成这样:Underscore.js - 阵列与相同的密钥
"colors":["pink", "Blue"]
或者干脆此
["pink", "Blue"]
这个
[{ colors: "pink" }, { colors: "blue" }]
为了能够在AngularJS中使用它。有没有办法使用underscore.js来做到这一点?提前致谢!
Underscore提供了_.map()
方法,它可以让您完成要查找的内容。
var arr = ['pink','blue'];
var hash = _.map(arr, function(color){ return {colors: color};});
然而,undercore的地图的方法是简单地围绕天然Array#map
方法在JavaScript中,其可以被用作瘦包装如下:
var arr = ['pink', 'blue'];
var hash = arr.map(function(color){ return {colors: color}; });
完美的作品。非常感谢! – Joe82
一般来说,如果你有一个对象像这个:
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(...)
),它串接所有阵列。
谢谢,我想这是一个更一般的情况! – Joe82
使用underscore.js是强制性的吗? – LostMyGlasses
不,我一直在努力做到这一点与underscore.js,因为我是新的Javascript,但我想用简单的Javascript确定:) – Joe82