如何使用for-in语句筛选数组中大于5的元素存入新数组并打印
代码存在的核心问题
- for...in遍历数组时,拿到的
number是数组索引的字符串类型值,不是数组的元素本身,比如第一次遍历拿到的是"0"而不是1;另外for...in会遍历数组原型链上的可枚举属性,本身并不推荐用来遍历普通数组。 result.push (number => number > 5)这行是直接把箭头函数本身推入了结果数组,完全没有做「判断元素是否大于5、符合条件再推入」的逻辑。console.log(result)写在了循环体内部,会每次循环都打印一次当前的数组,而不是只打印最终的筛选结果。
修改后的实现代码
版本1:保留for-in语句的练习需求
let numbers = [1, 2, 3, 4, 5, 6, 7, 8]; let result = []; for (var index in numbers){ // 先通过索引取到对应的数组元素 const num = numbers[index]; // 判断是否大于5,符合条件才推入结果数组 if (num > 5) { result.push(num); } } // 循环结束后统一打印最终结果 console.log(result);
版本2:实际开发更推荐的简洁实现
用数组内置的filter方法可以直接完成筛选需求,不需要手动写循环:
let numbers = [1, 2, 3, 4, 5, 6, 7, 8]; let result = numbers.filter(num => num > 5); console.log(result);
内容的提问来源于stack exchange,提问作者whatever
相关产品推荐
相关产品推荐

