学习js数据结构与算法-数组(5)

94 阅读3分钟

「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。

个人觉得要想进大厂,就必须学习了解算法和数据结构,经历了多次面试之后,也知道了算法和数据结构的重要性,所以,我也打算从今天开始,进入学习,下载了一下电子书,边看书,边跟着书的例子来敲一下代码,下面就开始总结一下对算法和数据结构的学习吧。

第六天:继续了解数组

迭代器函数

js内置了许多数组可用的迭代方法。对于本节的例子,我们需要

  • every

    对数组中的每个元素运行给定函数,如果该函数对每个元素都返回 true,则返回 true

    如果我们想要如果数组中的元素里都是偶数的话,则返回true,否则返回false,就可以用下面的方法求出来

    let arr = [1,2,3,4,5]
    const isEven = x => x % 2 === 0;
    arr.every(isEven);
    

    如果找到了不是偶数(奇数)之后,他就是停止执行循环,并返回false,所以上面的返回是false。

  • some

    对数组中的每个元素运行给定函数,如果任一元素返回 true,则返回 true

    some 方法。它和 every 的行为相反,会迭代数组的每个元素,直到函 数返回 true。

    arr.some(isEven);
    

    只要有一个是偶数,就返回true,否则返回false,所以上面的结果是返回true

  • forEach

    对数组中的每个元素运行给定函数。这个方法没有返回值

    arr.forEach(item => console.log(item))
    

    上面会输出每一个元素的值,所以上面的输出是1,2,3,4,5

    但是它有一个特点,那就是它没有返回值

  • map

    对数组中的每个元素运行给定函数,返回每次函数调用的结果组成的数组

    arr.map(item => item * 2)
    

    上面会返回函数里面处理过后的数组,并且不会改变原来的数组

    所以上面返回的结果是[2,4,6,8,10]

  • filter

    对数组中的每个元素运行给定函数,返回该函数会返回 true 的元素组成的数组

    arr.filter(item => item % 2)
    

    filter是过滤,他会过滤掉函数为true的元素,所以上面的结果是[1,3,5]

  • reduce

    reduce 方法接收一个有如下四个参数的函数:previousValue、 currentValue、index 和 array。因为 index 和 array 是可选的参数,所以如果用不到它们 的话,可以不传。这个函数会返回一个将被叠加到累加器的值,reduce 方法停止执行后会返回 这个累加器。如果要对一个数组中的所有元素求和,这就很有用。下面是一个例子。

    arr.reduce((previous, current) => previous + current); 
    

    上面,我们没有reduce的第二个参数,所以它默认值是数组的第一个元素,所以最后的输出结果是15