Javascript Underline.js-数组到具有相同键的对象
我需要将其转换为:Javascript Underline.js-数组到具有相同键的对象,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,我需要将其转换为: "colors":["pink", "Blue"] 或者仅仅是这个 ["pink", "Blue"] 进入这个 [{ colors: "pink" }, { colors: "blue" }] 为了能够在AngularJS中使用它。是否有任何方法可以使用下划线.js完成此操作?提前谢谢 下划线提供了\.map()方法,该方法允许您完成所需的任务 var arr = ['pink','blue']; var hash = _.map(arr, function(color
"colors":["pink", "Blue"]
或者仅仅是这个
["pink", "Blue"]
进入这个
[{ colors: "pink" }, { colors: "blue" }]
为了能够在AngularJS中使用它。是否有任何方法可以使用下划线.js完成此操作?提前谢谢 下划线提供了
\.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 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 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(…)
)。必须使用下划线.js吗?不,我一直在尝试使用下划线.js,因为我是Javascript新手,但我想使用简单的Javascript是可以的:)你没有完全错,但使用map()是惯用的方法
在这种情况下,我已将另一个标记为正确,但非常感谢您的帮助@这是漫长的一天,我已经更正了代码:)@Matt虽然map在语法上看起来更好,但实际上它在性能上是相等的,如果不是更快一点的话。而最快的可能是一个“正常”的loop@FranePoljak删除我先前的评论以确认更正。我在这些情况下运行了一个快速性能测试,forEach位于顶部,然后使用for循环,map位于后面。然而,除非在极其苛刻的性能环境下,否则这种差异不会明显。非常感谢你!谢谢,我想这是一个更普遍的情况!