反對我需要轉換成這樣: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