JS数组方法

515 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

看完了数组的视频,趁热整理一下

数组方法

这里简单的总结了forEach() map() filter() some() every(),这些方法都存在Array.prototype原型中

forEach()

Array.prototype.forEach() 遍历数组,无返回值,不改变原数组,仅仅只是遍历

let arr = ["青椒", "鸡蛋", "黄瓜", "程序员"];
arr.forEach((value, index, array) => {
    console.log(index + 1 + ":" + value);
    console.log(array);
})

打印结果如下:

forEach().png

  • value :获取数组中当前元素的内容
  • index:获取当前元素的索引
  • array:获取整个数组
  • 无返回值

实现各个元素相加

let arr = [2, 5, 8, 11];
let num = 0;
arr.forEach(value => num += value)
console.log("num:" + num);      // 26

map()

Array.prototype.map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。与forEach()用法相似。

  • map函数可以看成是一种映射函数,而且是一一映射
  • map适合对一个数组中的每个元素进行相同的操作

实现所有元素数值*2

const array1 = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1);
//打印结果:[2, 8, 18, 32]

filter()

Array.prototype.filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

  • filter函数可以看成是一个过滤函数,返回符合条件的元素的数组
  • filter和map的区别:filter需要在循环的时候判断一下是true还是false,是true才会返回这个元素;map没有这个过程。
  • filter函数适合筛选一个数组中满足条件的元素,注意:filter函数只是筛选功能,不能改变元素、操作元素
  • filter为“过滤”。数组filter后,返回过滤后的新数组

根据字符长度筛选元素

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
//打印结果:["exuberant", "destruction", "present"]

根据数值筛选元素

const arr = [4, 8, 11, 3, 1, 9];
const result = arr.filter(value => value > 5)
console.log(result);
//打印结果:[8, 11, 9]

some()

Array.prototype.some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

  • 用来检测是否存在某个数据,存在返回true,否则返回false

判断元素是否存在

const array = [1, 2, 3, 4, 5];
const even = (element) => element % 2 === 0;
console.log(array.some(even));
//打印结果:true

some() 只用来判断是否存在,一旦检测出存在元素,就会立即停止遍历,返回true

every()

Array.prototype.every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。

判断所有元素是否满足条件

const array = [1, 2, 3, 4, 5];
const even = (element) => element % 2 === 0;
console.log(array.every(even));
//打印结果:false

总结

  • 每天学完都要有一些小的总结,加油!掘友们!
  • 后续更新:JS原型链