从数组中删除虚假值

Mar*_*leg 3 javascript arrays algorithm loops boolean

我正在 freeCodeCamp 学习,目前正在学习基础算法。我正在做虚假保镖练习,您需要从数组中删除所有虚假值。遗憾的是,该任务只有高级答案,即使用 filter() 方法。我决定做一个基本的,但目前卡住了。

function bouncer(arr) { 

//*loops through array*    

for (let i = 0; i < arr.length; i++) {  

// *if there is a value that is falsy, delete that value from the array*    

if (arr[i] == 0 || arr[i] == NaN || arr[i] == null || arr[i] == false || arr[i] == "" || arr[i] == undefined) {        

delete arr[i];

     }    

   }    

return arr;

} 

console.log(bouncer([7, "ate", "", false, 9]));
Run Code Online (Sandbox Code Playgroud)

它返回:

7、吃了、、、9。

该函数确实删除了虚假值,但我留下了这三个句点(,,,)。有没有办法让这个函数更正确地工作并返回没有这些句点的真值,同时又不失去函数的简单性?感谢你的帮助。

ic3*_*3rg 5

delete只适用于物体。filter会做你想做的事:

const arr = [7, "ate", "", false, 9]

console.log(arr.filter(x => x))
Run Code Online (Sandbox Code Playgroud)

filter仅保留数组中函数返回 true 的元素 - 此处我使用它是x => x因为您只需要 true 元素