every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
如果发现了一个不符合条件的元素,every 方法将会立即返回 false,停止后面的便利
/**
* element 当前项
* index 索引
* array 源数组
*/
let arr1 = [12, 5, 8, 130, 44]
let arr2 = [12, 54, 18, 130, 44]
function isBigEnough(element, index, array) {
arr1.splice(0)
console.log(element, index, array, this)
return element >= 10;
}
/**
* callback 回调函数
* thisArg 执行 callback 时使用的 this 值。 非严格模式下不指定为 window, 严格模式下为undefined
*/
arr1.every(isBigEnough); // false
arr2.every(isBigEnough, [100]); // true
var arr1 = [12, 15, 8, 130, 44]
function isBigEnough(element, index, array) {
console.log(element, index, array, this, arr1)
arr1.push(0)
return element >= 8;
}
arr1.every(isBigEnough); // true
var arr1 = [12, 15, 8, 130, 44]
function isBigEnough(element, index, array) {
console.log(element, index, array, this, arr1)
arr1[2] = 5
return element >= 8;
}
arr1.every(isBigEnough); // false
var arr1 = [12, 15, 5, 130, 44]
arr1.length = 6
// arr1[5] 是一个从来未被赋值的元素
function isBigEnough(element, index, array) {
console.log(element, index, array, this, arr1)
arr1.splice(2, 1)
return element >= 8;
}
arr1.every(isBigEnough);
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
filter 为数组中的每个元素调用一次 callback 函数,
并利用所有使得 callback 返回 true 或等价于 true 的值的元素创建一个新数组。
同 every 函数
filter 遍历的元素范围在第一次调用 callback 之前就已经确定了。
代码同 every 函数测试代码
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值。
当你不打算使用返回的新数组却使用map是违背设计初衷的,请用forEach或者for-of替代。
同 every 函数
map 遍历的元素范围在第一次调用 callback 之前就已经确定了。
代码同 every 函数测试代码
reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
const array1 = [1, 2, 3, 4];
/**
* accumulator 累加器
* currentValue 当前值
* currentIndex 当前项
* sourceArray 源数组
*/
const reducer = (accumulator, currentValue, currentIndex, sourceArray) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
/**
* callback 回调函数
* initialValue 作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。
在没有初始值的空数组上调用 reduce 将报错。
*/
console.log(array1.reduce(reducer, 5));
// expected output: 15
注意:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。
如果提供initialValue,从索引0开始。
reduce 遍历的元素范围在第一次调用 callback 之前就已经确定了。
代码同 every 函数测试代码
some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
找到一个使得 callback 返回一个“真值”时,立即停止后面的查找
同 every 函数
some 遍历的元素范围在第一次调用 callback 之前就已经确定了。
代码同 every 函数测试代码
slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
可实现数组的浅拷贝
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
/**
* start 起始坐标(包含、可为负、默认从0开始、如大于数组长度则返回 [])(可选)
* end 终止坐标(不包含、默认值一直提取到数组的最后、可为负最后一个为 -1、大小超出数组长度时,一直提取到数组的最后)(可选)
*/
var citrus = fruits.slice(1, 3);
function list() {
return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var myFish = ["angel", "clown", "mandarin", "sturgeon"];
/**
* start 起始坐标(包含、可为负、默认从0开始、如大于数组长度则返回 [])(可选)
* deleteCount 删除元素的长度或者插入元素的位置
* item1, item2, ... 需要插入的元素
*/
var citrus = fruits.slice(1, 3);
var removed = myFish.splice(2, 0, "drum");