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