一、返回新数组,原始数组不会改变
Array.concat IE6
返回被连接数组的一个副本
var alpha = ['a', 'b', 'c'];
var numeric = [1, 2, 3];
alpha.concat(numeric);
// result in ['a', 'b', 'c', 1, 2, 3]
Array.filter IE9+
返回一个新数组
const filtered = [12, 5, 8, 130, 44].filter(value => {return value >= 10;});
// filtered is [12, 130, 44]
Array.map IE9+
返回一个新数组
var numbers = [1, 4, 9];
var doubles = numbers.map(function(num, index, array) {
return num * 2;
});
// doubles is now [2, 8, 18]
// numbers is still [1, 4, 9]
Array.reduce IE9+
返回单个值
arr.reduce(callback[, initialValue]) 参数: 1)callback四个参数: 1.accumulator 储存 callback 返回的 values; 2.currentValue 数组中的当前执行元素 3.currentIndex 可选 数组中当前执行元素的 Index 值。 从 0 开始, 如果设置了 initialValue,则从 1 开始. 4.array 可选 The array reduce() was called upon. 2)initialValue 可选 作为 callback 中的第一个元素. 如果不设置 initial value, 数组中的第一个元素将被使用. 在一个空 array 上执行 reduce() 而没有设置 initialValue 将会报错.
const array1 = [1, 2, 3, 4]; const reducer = (accumulator, currentValue) => accumulator + currentValue; // 1 + 2 + 3 + 4 console.log(array1.reduce(reducer)); // expected output: 10 // 5 + 1 + 2 + 3 + 4 console.log(array1.reduce(reducer, 5)); // expected output: 15
Array.reduceRight IE9+
和 Array.reduce 功能相同,但是是从右向左执行
const array1 = [[0, 1], [2, 3], [4, 5]].reduceRight(
(accumulator, currentValue) => accumulator.concat(currentValue)
);
console.log(array1);
// expected output: Array [4, 5, 2, 3, 0, 1]
Array.from IE不支持
Array.from('foo');
// ["f", "o", "o"]
Array.slice(start,end)
方法可从已有的数组中返回选定的元素。
start 规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
[George,John,Thomas].slice(1)
//John,Thomas
Array.prototype.slice.call()
1. slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个新数组。
function list() {
return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
也可以简单的使用 [].slice.call(arguments)
来代替
2.增加第二个参数
function list() {
return Array.prototype.slice.call(arguments, 1);
}
var list2 = list(4, 5, 6);
list2; //[5, 6]
二、修改原有的数组
Array.push()
向数组的末尾添加一个或更多元素,并返回新的长度。
Array.splice()
从数组中添加/删除项目,然后返回被删除的项目
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum');
// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed is [], no elements removed
ar myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);
// removed is ["mandarin"]
// myFish is ["angel", "clown", "drum", "sturgeon"]
Array.pop()
删除并返回数组的最后一个元素。
Array.shift()
删除并返回数组的第一个元素
Array.sort()
字母排序
[George,John,Thomas,James,Adrew,Martin].sort()
//Adrew,George,James,John,Martin,Thomas
数字排序
function sortNum(a, b) {
return a - b;
}
console.log([0, 9, 3, 6, 2].sort(sortNum));
//[ 0, 2, 3, 6, 9 ]
三、返回字符串
Array.join()
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
console.log(arr.join("."))
//George.John.Thomas
四、返回索引值
Array.indexOf()
var fruits = ["Strawberry", "Banana", "Mango"] var pos = fruits.indexOf('Banana'); // 1