簡體   English   中英

按屬性名稱數組過濾對象

[英]Filter object by array of property names

我有一個像這樣的東西

var obj = { name1: somevalue1, name2: somevalue2, name3: somevalue3}

和一個數組

var arr = [name2, name3]

兩者都是動態創建的。 我需要按數組過濾對象(准確按屬性名稱,而不是按其值)。 但是到目前為止,我發現的所有方法都是關於按值過濾的。 所以結果應該是

var result = {name2: somevalue2, name3: somevalue3}

我使用的是下划線。 我需要過濾它不是在模板中,而是在控制器中。 感謝您的幫助!

您可以使用_.pick來“過濾”對象。

 var obj = { name1: "somevalue1", name2: "somevalue2", name3: "somevalue3"}; var keys = ["name1", "name2"]; console.log(_.pick(obj, keys)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 

您可以迭代鍵並使用鍵值對構建新對象。

 var obj = { name1: 'somevalue1', name2: 'somevalue2', name3: 'somevalue3' }; arr = ['name2', 'name3'], result = Object.create(null); arr.forEach(function (k) { result[k] = obj[k]; }); console.log(result); 

您可以使用reduce()返回對象。

 var obj = { name1: 'somevalue1', name2: 'somevalue2', name3: 'somevalue3' } var arr = ['name2', 'name3'] var result = Object.keys(obj).reduce(function(r, e) { if (arr.indexOf(e) != -1) r[e] = obj[e]; return r; }, {}) console.log(result) 

對數組的每個元素進行迭代,並檢查對象中的元素是否可用作鍵名,然后將其放入結果中。

var obj = { name1: somevalue1, name2: somevalue2, name3: somevalue3};// This is ur object

var arr = [name2, name3];// and this is the array for each element you have to get values from obj

var filterResult = {};// An object to stored the filtered values

arr.forEach(function(elem){ // Iterate for each element of array
    if (obj[elem]) // check in your data object if any key is available of the name of array element 
        filterResult[elem] = obj[elem]; // then put it in filtered object
});

console.log(filterResult);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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