簡體   English   中英

使用underscore.js減少數組元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM