一分钟写出数组for循环删除符合条件的最优代码,有多少人能做到?

107 阅读1分钟

图书馆系列:数组-数组的各种方法。

数组for循环删除符合条件的元素,给你这样的数据:

let arr = [1, 2, 3, 321, 456]; 
// 删除能被2整除的项,即 n%2 === 0的,将之变为:
[1, 3, 321]

笨笨的开发:

let arr = [1, 2, 3, 321, 456];
let arr2 = JSON.parse(JSON.stringify(arr)), num = 0;
for (let i = 0, l = arr2.length; i<l; i++) {
    if (arr2[i]%2 === 0) {
        arr.splice(i-num, 1);
        num++;
    }
}

一般的开发:

let arr = [1, 2, 3, 321, 456], n = 0;
for(let i = 0, l = arr.length; i<l; i++) {
    if (arr[i-n]%2 === 0) {
        arr.splice(i-n, 1);
        n++;
    }
}

聪明开发:

let arr = [1, 2, 3, 321, 456]
for(let i = 0; i < arr.length;) {
    if (arr[i]%2 === 0) {
        arr.splice(i, 1)
    }
}

这题主要用于考察面试者的js基础,看看他对数组for循环的掌握,因为for循环是我们开发常用的,每一次的循环数据的变化我们必须要清楚,包括数组本身。