繁体   English   中英

为什么我不能从数组中删除元素?

[英]Why can't I remove elements from the array?

这个 function 应该删除小于 1 和大于 4 的元素,但它没有。 数组还是一样的。

 let arr = [5, 3, 8, 1]; function filterRangeInPlace(arr, a, b) { arr.forEach((item, index) => { if (a > item && b < item) { arr.splice(index, 1); }; }); }; filterRangeInPlace(arr, 1, 4); console.log(arr);

怎么了?

什么时候单个项目既小于 1 又大于 4? 如果要删除小于 1大于 4 的项,则需要执行以下操作:

if (a > item || b < item)

你在调用 function 时反转了 arguments。你应该这样做

 filterRangeInPlace(arr, 4, 1)

您基本上是将项目保持在给定范围之间,而不是删除项目 go 以保持项目这将返回相同的也使用filter function 它基本上遍历数组,就像foreach里面有两个参数 item 和 index 唯一的区别是过滤器在您时保留值如果返回 false,则返回 true 或忽略

您可以在此处查看有关过滤器的更多信息

 let arr = [5, 3, 8, 1]; function filterRangeInPlace(arr, a, b) { return arr.filter(each=>{ return each > a && each < b }) }; arr = filterRangeInPlace(arr, 1, 4); console.log(arr);

暂无
暂无

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

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