/**
* 1.数组方法
* 迭代(遍历)方法: forEach()、map()、filter()、some()、every();
*/
/**
* array.forEach(function(value, index, arr) {});
* value: 数组当前项的值
* index: 数组当前项的索引
* arr: 数组对象本身
* 1. 没有返回值,本质上等同于 for 循环
* 2. forEach 是改变原数组。
* 3. 不支持 continue,用 return false 或 return true 代替。
* 4. 不支持 break,用 try catch/every/some 代替;
*
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
forEach() 的 continue 与 break
forEach() 本身是不支持的 continue 与 break 语句的,我们可以通过 some 和 every 来实现。
使用 return 语句实现 continue 关键字的效果
*/
var arr = [2,23,31];
arr.forEach(function(value, index, arr) {
console.log(value+'数组当前的值');
console.log(index+'数组当前项的索引');
console.log(arr+'数组对象本身');
});
/**
* array.map(function(value, index, arr) {}, thisValue)
* value: 数组当前项的值
* index: 数组当前项的索引
* arr: 数组对象本身
* thisValue: 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
* map()方法返回一个新数组, 新数组中的元素为元素数组调用函数处理后的值
* map()方法按照原始数组顺序依次处理元素
*
* map()不会改变原始数组
* map()不会对空数组进行检测
*/
var newMap = arr.map(function(value, index, arr) {
return value * 2;
});
/**
* 这里注意箭头函数有两种格式:
1.只包含一个表达式,这时花括号和return都省略了。
2.包含多条语句,这时花括号和return都不能省略。
*/
var newMap1 = arr.map(x=>x+1)
console.log(arr); // 2,23,31
console.log(newMap); // 4,46,62
console.log(newMap1); // 3,24,32
/**
* array.every(function(currentValue,index,arr), thisValue)
* every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。
注意: every() 不会改变原始数组。
*/
// 检测数组 arr 的所有元素是否都大于 22 :
var arrEvery = arr.every(val => {
return val > 22;
})
console.log(arrEvery);
/**
* array.filter(function(value, index, arr) {})
* 作用: 用来筛选数组的 返回新所有满足条件的数组集合
* filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组
*
* 1. 它直接返回一个新数组,不改变原来的数组
* 2. value: 数组当前项的值
* 3. index:数组当前项的索引
* 4. arr: 数组对象本身
*/
var arr1 = [22,33,44,55];
var newArr1 = arr1.filter((value, index) => {
return value > 30;
});
console.log(arr1)
console.log(newArr1) // 33,44,55
/**
* array.some(function(value, index, arr) {})
* value: 数组当前项的值
* index: 数组当前项的索引
* arr: 数组对象本身
* 作用: 检测数组中是否有满足条件的元素 返回布尔值
*
* some()用于检测数组中的元素是否满足指定的条件,就是查找数组中是否满足条件的元素
*
* 1. 返回的值是布尔值,如果找到这个元素,返回true,然后终止循环,找不到返回false
* 2. 如果找到第一个满足条件的元素,则终止循环,不再继续查找
*/
var arr2 = [1,2,3,4,5];
var flag = arr2.some((val, index) => {
return val > 2;
});
console.log(flag); // true
/**
* some()方法 和 filter()方法的比较
*
* 1. filter() 查找满足条件的元素,返回的是一个数组, 而且是把所有满足条件的元素返回回来
* 2. some() 也是查找满足条件的元素是否存在,返回的是一个布尔值,查找到第一个满足条件的元素就终止循环
*/
console