小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
看完了数组的视频,趁热整理一下
数组方法
这里简单的总结了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);
})
打印结果如下:
- 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原型链