JS基础—Array

一、返回新数组,原始数组不会改变

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