如何使用三元运算符实现自定义Array.filter数组方法?
实现方案
你只需要将//???替换为null即可,同时需要在方法开头补充空数组newArray的初始化逻辑,否则运行时会报变量未定义错误。
完整可运行代码
const s = [23, 65, 98, 5]; Array.prototype.myFilter = function(callback) { // 新增初始化空数组的逻辑 const newArray = []; this.forEach(a => callback(a) === true ? newArray.push(a) : null) return newArray; }; var new_s = s.myFilter(function(item) { return item % 2 === 1; });
补充说明
- 三元运算符要求条件成立和不成立的分支都要有对应返回值,不需要执行操作的分支填入
null是最简洁的写法,替换为undefined、void 0效果完全一致 - 你现有代码中的
callback(a) === true可以简化为callback(a),因为filter的规则是只要回调返回真值就保留元素,不需要严格等于布尔值true,原有写法逻辑也没有问题。
内容的提问来源于stack exchange,提问作者untitiledunmastered
相关产品推荐
相关产品推荐

