[英]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.