Underscore.js - 数组到具有相同键的对象
Underscore.js - array to object with same key
我需要转换这个:
"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 的 map 方法只是对 javascript 中原生 Array#map
方法的简单包装,可以按如下方式使用:
var arr = ['pink', 'blue'];
var hash = arr.map(function(color){ return {colors: color}; });
var newArray = new Array();
colors.forEach(function(item) {
newArray.push({colors: item});
});
一般来说,如果你有这样的对象:
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(...)
)。
我需要转换这个:
"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 的 map 方法只是对 javascript 中原生 Array#map
方法的简单包装,可以按如下方式使用:
var arr = ['pink', 'blue'];
var hash = arr.map(function(color){ return {colors: color}; });
var newArray = new Array();
colors.forEach(function(item) {
newArray.push({colors: item});
});
一般来说,如果你有这样的对象:
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(...)
)。