请你编写一个函数,该函数接受一个整数数组参数 arr 和一个过滤函数 fn,并返回一个过滤后元素数量较少或元素数量相等的新数组。 返回的数组应该只包含通过过滤函数 fn(arr[i], i) 计算后为真值的元素。 请你在不使用内置函数 Array.filter 的前提下解决该问题。 示例 1: 输入:arr = [0,10,20,30], fn = function greaterThan10(n) { return n > 10; } 输出: [20,30] 解释: const newArray = filter(arr, fn); // [20, 30] 过滤函数过滤掉不大于 10 的值
时间: 2024-03-10 19:47:28 浏览: 19
好的,以下是一个实现该功能的函数:
```
function filter(arr, fn) {
const filteredArr = [];
for (let i = 0; i < arr.length; i++) {
if (fn(arr[i], i)) {
filteredArr.push(arr[i]);
}
}
return filteredArr;
}
```
这个函数接受两个参数:一个整数数组 arr 和一个过滤函数 fn。它遍历数组 arr 中的每个元素,如果 fn(arr[i], i) 的结果为真,则将该元素添加到 filteredArr 中。最后,函数返回 filteredArr。
使用示例:
```
const arr = [0, 10, 20, 30];
function greaterThan10(n) {
return n > 10;
}
const newArray = filter(arr, greaterThan10);
console.log(newArray); // [20, 30]
```
注意,这个函数并没有使用内置函数 Array.filter,而是通过自己的逻辑实现了相同的功能。
相关问题
设想一个 reduceO函数的应用并实现。
好的,reduceO函数可以用于对一个数组或列表中的元素进行累加或累乘等操作。下面是一个简单的 reduceO 函数的实现:
```
function reduceO(arr, fn, initialValue) {
let accumulator = initialValue === undefined ? arr[0] : initialValue;
for (let i = initialValue === undefined ? 1 : 0; i < arr.length; i++) {
accumulator = fn(accumulator, arr[i]);
}
return accumulator;
}
```
这个函数接受三个参数:一个数组或列表,一个函数 fn 和一个可选的初始值 initialValue。函数 fn 接受两个参数,分别是累加器和当前元素,然后返回一个新的累加器。reduceO 函数会对数组中的每个元素都调用一次函数 fn,最终返回一个累加器的值。
例如,我们可以使用 reduceO 函数来计算一个数组中所有元素的和:
```
const arr = [1, 2, 3, 4, 5];
const sum = reduceO(arr, (accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 15
```
在这个例子中,我们传递了一个初始值 0,然后使用箭头函数计算累加器的值。最终,reduceO 函数返回了数组中所有元素的和。
实现一个函数 dealArr,接受两个参数(数组,函数),返回值为每一个选项都经过函数处理后的新数组,注意操作过程不能影响原来的数组。
您可以使用 Array.map() 函数来实现这个 dealArr 函数。Array.map() 函数接受一个回调函数作为参数,对数组中的每一个元素都进行回调函数的调用,并返回一个新的数组。
这样的话,我们可以通过传入的第二个参数作为回调函数,来对数组中的元素进行处理,并返回一个新的数组,而不影响原来的数组。
代码如下:
```
function dealArr(arr, fn) {
return arr.map(fn);
}
```
希望对您有所帮助。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)