[英]reducing array elements using underscore.js
我正在獲取包含許多參數的數據數組。 例如,數據數組的格式如下:
var data = [
{
"name":"pradeep",
"age": "32",
"location": "Bangalore"
},
{
"name":"praveen",
"age": "30",
"location": "Mangalore"
},
{
"name":"Ajay",
"age": "32",
"location": "Hubli"
}
]
我希望上述數組減少為以下格式:
[
{
"name":"pradeep"
},
{
"name":"praveen"
},
{
"name":"Ajay"
}
]
如何使用Underscore完成此操作。 我嘗試使用_.pluck,但它僅獲取數據,而不獲取密鑰。
您可以使用純JavaScript來實現,一種方法是:
data.map(function(obj) {
return {'name': obj.name};
})
如果您想對應該保留的鍵進行參數化,則可以編寫如下函數:
function filterByKey(arr, key) {
return arr.map(function(obj) {
var newObj = {};
newObj[key] = obj[key];
return newObj;
});
}
並像這樣使用它:
var newData = filterByKey(data, 'name');
干杯
對於嚴格下划線的JS方法,可以將_.map
與_.pick
結合使用:
var newData = _.map(data, function(d) { return _.pick(d, 'name' })
但是,使用_.pick
效率不如僅在_.map
回調中返回{ name: d.name }
那樣_.map
。
下划線不是真正需要的,您可以這樣做。
var newData = data.map(function (x) {
return { name: x.name };
});
但是,如果您真的想使用下划線,可以這樣:
var newData = _.map(data, function (x) {
return { name: x.name };
});
在本機JavaScript中,您可以像這樣進行操作:
var data = [{ "name": "pradeep", "age": "32", "location": "Bangalore" }, { "name": "praveen", "age": "30", "location": "Mangalore" }, { "name": "Ajay", "age": "32", "location": "Hubli" }]; var newData = data.map(function(d) { return { name: d.name } }); console.log(newData)
您需要使用Undescore中的地圖功能。 它是功能編程中非常流行的實用程序,您也可以在瀏覽器中本地使用它。
使用Underscore.js,代碼如下所示:
_.map(data, function(element) {
return {name: element['name']};
})
您可以使用本機JavaScript進行操作
var result = [];
data.forEach(function(d){
result.push({'name': d.name}) // d is an iterator
})
您可以使用map函數返回鍵值對
var result = data.map(function(d){
return {'name': d.name}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.