近期通过做 freecodecamp 题目学习 JS,今天发现一个真假值的问题,请大家指点一下。
题目是,给定一个数组,如 [7, "ate", "", false, 9],让你定义一个函数,将数组中的真值筛选出来,并以数组形式返回
我的解法,循环判断值,如不为真则将该值从数组中删除
function bouncer1(arr) {
for(let i=0;i<arr.length;i++){
if(!arr[i]) arr.splice(arr.indexOf(arr[i]), 1);
}
return arr;
}
bouncer1([7, "ate", "", false, 9]);
运行结果是 [7, "ate", false, 9],false 不知为何没有过滤掉
我觉得问题可能在 !arr[i] 或者 arr.indexOf(arr[i]) 上,但我尝试了一下发现这两处运行的结果都是符合预期的,不知问题到底在哪
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.