我有一個包含對象的數組,像這樣:創建一個從對象屬性的集合兩個數組和值lodash
[{
"first" : 1
},
{
"second" : 2
},
{
"third" : 3
}]
我希望把它變成兩個陣列,帶有索引匹配基於這些值如:
["first","second","third"]
[1,2,3]
我可以通過這個迭代並獲取對象鍵和值,但我覺得還有得是在lodash一個漂亮的方式做到這一點,我不知道。有什麼建議麼?謝謝!
我有一個包含對象的數組,像這樣:創建一個從對象屬性的集合兩個數組和值lodash
[{
"first" : 1
},
{
"second" : 2
},
{
"third" : 3
}]
我希望把它變成兩個陣列,帶有索引匹配基於這些值如:
["first","second","third"]
[1,2,3]
我可以通過這個迭代並獲取對象鍵和值,但我覺得還有得是在lodash一個漂亮的方式做到這一點,我不知道。有什麼建議麼?謝謝!
對於非lodash溶液:
var arr = [{"first" : 1},{"second" : 2},{"third" : 3}];
var keys = arr.map(function(el){return Object.keys(el)[0];});
var vals = arr.map(function(el){return el[Object.keys(el)[0]];});
對於相反的問題(多個陣列到對象中的一個陣列),參見Merge two arrays into an array of objects with property values
這工作完美。謝謝 – dzm
假設你的物體的形狀始終是{"label": value}
,那麼你可以使用這個香草的JavaScript:
var data = [{"first" : 1},{"second" : 2},{"third" : 3}];
var labels = data.map(function(entry) {
return Object.keys(entry)[0];
});
var values = data.map(function(entry) {
return entry[Object.keys(entry)[0]];
});
你的數據結構似乎根據您的意見次優的。我會建議替代的結構:
var data = [
{'label': 'first', 'value': 1},
{'label': 'second', 'value': 2},
{'label': 'third', 'value': 3}
]
,然後瑣碎挑選出的標籤和值連接成一個正常的JavaScript:
var labels = data.map(function(entry) {
return entry.label;
});
var values = data.map(function(entry) {
return entry.value;
});
或者,如果你真的想用lodash:
var labels = _.pluck(data, 'label');
var values = _.pluck(data, 'value');
希望您可以看到,無論您是否使用lodash,此修訂後的結構都使JavaScript更加簡單。
數組中的每一項都是不同的形狀。我懷疑如果你正在進行這樣的操作,不同的結構會更適合你的需求。例如,一個元組數組可能會更好:'[[''first',1],['second',2],['third',3]]' –
這是一個圖表庫,它使用這個標籤和數據結構。 – dzm