转换数组中的每个元素
通过对数组中的每个元素应用特定的转换操作,将其值进行转换或修改
/**
* 自定义过滤数组函数,根据给定的过滤函数 fn 过滤数组 arr。
*
* @param arr 整数数组
* @param fn 过滤函数,接受一个或两个参数:
* - arr[i] - 数组中的数字
* - i - 数字 arr[i] 的索引
* @returns 返回过滤后的数组 filteredArr,其中包含使 fn(arr[i], i) 返回真值的 arr 元素。
*/
function filter(arr: number[], fn: (n: number, i: number) => any): number[] {
const list: number[] = []
// 遍历数组 arr,对每个元素应用过滤函数 fn
arr.forEach((item, i) => {
const bool = fn(item, i)
// 如果过滤函数返回真值,则将元素添加到结果列表中
if (bool) {
list.push(item)
}
})
// 返回过滤后的数组
return list
};
// 示例用法
const example1 = [0, 10, 20, 30];
const greaterThan10 = function(n: number) { return n > 10; };
console.log(filter(example1, greaterThan10)); // 输出:[20, 30]
const example2 = [1, 2, 3];
const firstIndex = function(n: number, i: number) { return i === 0; };
console.log(filter(example2, firstIndex)); // 输出:[1]
const example3 = [-2, -1, 0, 1, 2];
const plusOne = function(n: number) { return n + 1; };
console.log(filter(example3, plusOne)); // 输出:[-2, 0, 1, 2]