- ES5
Array.every()
Array.some()
Array.filter()
Array.forEach()
Array.push()
Array.pop()
Array.unshift()
Array.shift()
Array.reduce()
Array.splice() - ES6
Array.from()
Array.of()
Array.fill()
Array.find()
Array.findIndex()
Array.flat()
Array.flatMap() - ES7
Array.includes()
Array.from
从一个类似数组或可迭代对象中创建一个新的、浅拷贝的数组实例
/**
* arrayLike 想要转换的对象
* mapFn 每个元素会执行该回调函数后返回
* 执行mapFn时的this对象
*/
Array.from(arrayLike[, mapFn[, thisArg]])
Array.from('foo'); // ["f", "o", "o"]
Array.from(new Set['foo', window]); // ["foo", window]
Array.from(new Map([[1, 2], [2, 4], [4, 8]])); // [[1, 2], [2, 4], [4, 8]]
function f() {
return Array.from(arguments);
}
f(1, 2, 3); // [1, 2, 3]
Array.from([1, 2, 3], x => x + x); // [2, 4, 6]
Array.of
创建一个具有可变数量参数的新数组实例
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
Array.every
测试一个数组内的所有元素是否能通过指定函数的测试,遍历到不满足测试函数的元素时,直接中止
[1,3,5,7,9].every(x => x%2===1); // true
Array.some
测试是否至少有一个元素通过测试函数,返回布尔值。遇到满足测试函数的元素时,直接中止
[1,3,5,7,9].some(x => x%2===1);
Array.fill
用一个固定值填充数组中指定区间的全部元素
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
var arr = Array(3).fill({}); // [{}, {}, {}];
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
Array.filter
创建一个新数组,包含所有能通过指定函数测试的元素
[1,3,5,6,8,9].filter(x => x%2===1); // [1, 3, 5, 9]
Array.find & Array.findIndex
返回满足提供的测试函数的第一个元素的值&索引,都不满足返回undefined & -1
[1,2,4,7,8].find(x => x>5); // 7
[1,2,4,7,8].findIndex(x => x>5); //3
Array.flat
按照指定深度递归遍历数组,将所有元素与遍历到的子数组中的元素合并为一个新数组返回
[1,2,3,[4,5]].flat(); // [1,2,3,4,5]
[1,2,3,[4,[5,6]]].flat(); // [1,2,3,4,[5,6]]
[1,2,3,[4,[5,6]]].flat(2); // [1,2,3,4,5,6]
[1,[2,[3,[4,[5,6]]]]].flat(Infinity); // [1,2,3,4,5,6]
Array.flatMap
等同与Array.map().flat()
let arr = ["今天天气不错", "", "早上好"]
arr.map(s => s.split(""))
// [["今", "天", "天", "气", "不", "错"],[""],["早", "上", "好"]]
arr.flatMap(s => s.split(''));
// ["今", "天", "天", "气", "不", "错", "", "早", "上", "好"]
Array.forEach
对数组的每一个元素执行一次提供的函数,该方法只能通过抛出异常中止
var words = ['one', 'two', 'three', 'four'];
words.forEach(function(word) {
console.log(word);
if (word === 'two') {
words.shift();
}
});
// one
// two
// four
Array.includes
用来判断一个数组是否包含一个指定的值,返回布尔值;方法不能用来检测对象数组的值
['cat', 'dog', 'bat'].includes('cat'); // true
['cat', 'dog', 'bat'].includes('Cat'); // false
let option = {name: 'cat'};
[option,'dog','bat'].includes({name: 'cat'}); // false
[option,'dog','bat'].includes(option); // true
Array.push & Array.pop & Array.unshift & Array.shift
为数组增加删除元素的方法
let arr = [1,2,3];
arr.push(4,5); // 5
console.log(arr); // [1,2,3,4,5]
arr.pop(); // 5
console.log(arr); // [1,2,3,4]
arr.unshift(6,7); // 6
console.log(arr); // [6,7,1,2,3,4]
arr.shift(); // 6
console.log(arr); // [7,1,2,3,4]
Array.reduce
对数组中的每一个元素执行提供的reducer函数,将结果汇总为单个返回值
/**
* accumulator累计器
* currentValue 当前元素
* initialValue 累计器初始值
*/
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => { return accumulator + currentValue; }, 10 ); // 10+0+1+2+3+4 = 20
Array.splice
对指定位置的进行元素的删除、新增、替换等操作,并返回被修改的内容。会改变原数组
/**
* start 修改的开始位置
* deleteCount 要移除的数组元素个数 0或负数表示不删除
* items 需要添加进数组的元素
*/
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
var removed = myFish.splice(2, 1, "trumpet"); // ["drum"] myFish: ["angel", "clown", "trumpet", "sturgeon"]