我正在使用 JSON 資料,我使用 .filter 過濾掉一些資料,我希望它排除一些類別和一些產品,我可以通過在我的過濾器回傳上單獨指定來輕松地做到這一點,但我認為這個串列很長而且它看起來并不可行。
我想我不必在這里添加示例 JSON,只需想象它對每個資料都有“類別”和“產品”。看看我是如何處理資料的:
var myfilter = myjson.filter(function(c) {
return (c.category != 3 && c.category!= 5 && c.category!= 8 && c.category!= 11 && c.product != 191 && c.product != 139 && c.product != "string instead of int");
});
^上面已經做了我需要的。我想要的是把它變成這樣的東西:
var excludedcats = [3, 5, 8, 11]
var excludedproducts = [191, 139, "string instead of int"]
var myfilter = myjson.filter(function(c) {
return (c.category != excludedcats && c.product != excludedproducts);
});
我不是javascript專業人士,但我覺得這就像'if'條件,它必須不斷重復c.category !=和c.product !=,所以我考慮了某種回圈,直到它指定所有其中。但我也可能完全迷失了。
我已經做了一些研究,但可能是因為我什至不知道所有的技術術語,所以我找不到我要找的東西。我能找到的最相關的是這個,它對我沒有幫助,只是在這里添加以證明我研究過??
uj5u.com熱心網友回復:
我認為您可以利用該includes方法:
var myfilter = myjson.filter(function(c) {
return !excludedcats.includes(c.category) && !excludedproducts.includes(c.product);
//return (c.category != excludedcats && c.product != excludedproducts);
});
更多資訊在這里:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
uj5u.com熱心網友回復:
這是一個更通用的版本。
var myjson = [{
category: 4,
product: "string instead of int"
},
{
category: 3,
product: 0
},
{
category: 2,
product: "should keep"
}
];
var exclusions = {
category: [3, 5, 8, 11],
product: [191, 139, "string instead of int"]
}
var myfilter = myjson.filter(function(c) {
for (var key in exclusions) {
for (var i = 0; i < exclusions[key].length; i ) {
if (c[key] == exclusions[key][i]) {
return false;
}
}
}
return true;
});
console.log(myfilter)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497840.html
標籤:javascript 数组 json 筛选
