【发布时间】:2019-12-27 02:15:33
【问题描述】:
到目前为止,我尝试了这个,但它返回未过滤的数组:
function filterRangeInPlace(array, min, max) {
array = array.filter(item => (item >= min && item <= max));
console.log(array);
}
let arr = [5, 3, 8, 1];
filterRangeInPlace(arr, 1, 4);
console.log(arr);
【问题讨论】:
-
.filter()always 创建一个新数组。您的代码不起作用,因为在函数中对array的赋值是对参数的赋值,而 JavaScript 是按值传递的语言。 -
要真正实现问题标题的要求,您必须编写一个函数来“粉碎”数组以消除过滤掉的条目。
-
函数
.filter()不像for循环,这个函数实际上对数组实体应用过滤器并返回一个新的过滤数组,它不会对实际数组进行更改就像for循环,所以当你需要过滤任何数组时,你必须需要一个变量来保存过滤后的数组结果,或者只使用for循环并从数组中删除影响原始数组元素的不满意条目
标签: javascript arrays filter