簡體   English   中英

過濾對象鍵上的數組非空

[英]filter an array on object keys not empty

我正在嘗試通過值為非空的對象鍵來過濾對象數組

 var collection = [ { "season": "ETE 18", "group": "GRBABY", "market": "ALL", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, { "season": "ETE 18", "group": "MEN", "market": "ALL", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, { "season": "ETE 18", "group": "GRBABY", "market": "NONE", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, ] var filterList = {season: "", group: "GRBABY", market: "ALL", department: "", skuType: ""} var result = _.filter(collection , proPack => { if (filterList.group !== '') { return proPack.group === filterList.group; } else { return proPack; } }); console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 

這適用於我的一個過濾器,但我沒有找到一種方法來過濾所有其他鍵有值。

結果應該是:

result = [
              {
    "season": "ETE 18",
    "group": "GRBABY",
    "market": "ALL",
    "department": "ALL",
    "skuType": "ALL",
    "orderType": "ASE",
    "packagingType": "CI"
} ]

您可以刪除空屬性:

 var collection = [{ "season": "ETE 18", "group": "GRBABY", "market": "ALL", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, { "season": "ETE 18", "group": "MEN", "market": "ALL", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, { "season": "ETE 18", "group": "GRBABY", "market": "NONE", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" } ] var filterList = {season: "", group: "GRBABY", market: "ALL", department: "", skuType: ""} var filterList = _.omitBy(filterList, _.isEmpty) // { group: "GRBABY", market: "ALL" } var result = _.filter(collection, filterList) console.log(filterList, result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 

我認為這應該做你想要的。 您是否忽略了filterList具有空值的鍵?

 var collection = [ { "season": "ETE 18", "group": "GRBABY", "market": "ALL", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, { "season": "ETE 18", "group": "MEN", "market": "ALL", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, { "season": "ETE 18", "group": "GRBABY", "market": "NONE", "department": "ALL", "skuType": "ALL", "orderType": "ASE", "packagingType": "CI" }, ] var filterList = {season: "", group: "GRBABY", market: "ALL", department: "", skuType: ""} var doFilter = function(arr, filterObj) { return arr.filter(propack => { for (key in filterObj) { if (filterObj[key] && filterObj[key] !== propack[key]) { return false; } } return true; }); }; console.log(doFilter(collection, filterList)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 

暫無
暫無

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

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