如何在JavaScript中遍历数组获取长度不大于4的新数组
错误原因
你写的filter回调逻辑完全不符合需求:
- 你在回调中返回的是
project[index <= 4],本质是先计算index <=4得到布尔值,再将布尔值隐式转为数字1(true对应)或0(false对应),最后取project字符串对应索引位置的字符,该逻辑和「保留前4个元素」没有任何关联。 - 你得到空数组是因为该逻辑返回的结果在你的运行场景下全为假值,所以没有元素被保留。
修正方案
如果一定要用filter实现,直接将索引判断结果作为返回值即可:
const projects = [ 'landing page', 'portfolio page', 'e-commerce app', 'Dapps', 'signup page', // ... even more ]; const newProjects = projects.filter((project, index) => { // 索引从0开始,小于4的对应前4个元素 return index < 4 }) console.log(newProjects);
更优实现
如果只是截取数组前4个元素,不需要遍历全数组的filter,直接用slice方法性能更高,且不会修改原数组:
const newProjects = projects.slice(0,4)
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

