如何正确从一个数组中移除另一个数组中的所有元素?
问题原因及解决方法
核心问题有两个:
- 类型不匹配:
delete00To04Am数组里的元素是字符串类型(比如'1669410000000'),而timesForAdvert里的是数字类型(比如1669410000000),用!==严格比较时,字符串和数字永远不相等。 - 逻辑判断错误:你当前的filter条件是把数组元素和整个
delete00To04Am数组对象做比较,这永远为true,所以不会过滤掉任何元素。
解决代码
方法1:统一类型为数字后过滤
先把delete00To04Am的字符串元素转成数字,再用includes判断是否需要过滤:
// 读取值并转成数字数组 let delete00To04Am = document.getElementById("time000am400amEveryDay").value; delete00To04Am = delete00To04Am.split(',').map(str => Number(str)); // 过滤数组 timesForAdvert = timesForAdvert.filter(item => !delete00To04Am.includes(item));
方法2:不转类型,直接转成字符串比较
如果不想修改delete00To04Am的类型,也可以在判断时把timesForAdvert的元素转成字符串:
let delete00To04Am = document.getElementById("time000am400amEveryDay").value; delete00To04Am = delete00To04Am.split(','); // 过滤数组 timesForAdvert = timesForAdvert.filter(item => !delete00To04Am.includes(item.toString()));
内容的提问来源于stack exchange,提问作者SirBT
相关产品推荐
相关产品推荐

