我需要过滤一些固定值(885,900,915,930,945),我可以这样做:
filteredData = data.options.filter(item => item.foo === 'CALL' && (item.bar === 885 || item.bar === 900 || item.bar === 915 || item.bar === 930 || item.bar === 945));
但是感觉就像一个丑陋的解决方案。我想做的是这样的:
const barConst = 885 || 900 || 915 || 930 || 945;
filteredData = data.options.filter(item => item.foo === 'CALL' && (item.bar === barConst);
但是那显然是行不通的。我可以在Javascript / node中做到这一点的任何巧妙方法吗?
答案 0 :(得分:2)
您可以获取一个数组并使用Array#includes
进行检查。
const
barConst = [885, 900, 915, 930, 945],
filteredData = data.options.filter(
({ foo, bar }) => foo === 'CALL' && barConst.includes(bar)
);
答案 1 :(得分:1)
includes
仅适用于ES6,indexOf
也适用于ES5,您可以获得相同的结果:
const barConst = [885, 900, 915, 930, 945];
filteredData = data.options.filter(item =>
item.foo === 'CALL' && barConst.indexOf(item.bar) > 0);
https://www.codementor.io/adroitcoder/includes-vs-indexof-in-javascript-ivxhatb3y