繁体   English   中英

从过滤器中排除变量上列出的对象列表

[英]Exclude the list of objects listed on the variable from the filter

我正在使用 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 专业人士,但我觉得这就像“如果”条件,它必须不断重复c.category =Z4A8A08F09D37B73795649038408B5F33 . 但我也可能完全迷失了。

我已经做了一些研究,但可能是因为我什至不知道所有的技术术语,所以我找不到我要找的东西。 我能找到的最相关的是这个,它对我没有帮助,只是在这里添加以证明我研究过😅

我认为您可以利用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

这是一个更通用的版本。

 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM