//constructor属性
var arr = [];
arr.constructor === Array
//true


//prototype属性
Array.prototype.max = function(){
	var max = this[0];
	for(var i = 1; i < this.length; i++){
		if(this[i] > max){
			max = this[i];
		}
	}
	return max;
}
console.log([2, 5, 2, 1, 3, 8, 5].max());
//8

//Array.from属性
function a(m, n, o){
	return arguments;
}
a(1, 2, 3);		//返回的是类数组
Array.from(a(1, 2, 3));		//返回的是数组
Array.prototype.slice.call(a(1, 2, 3));		//返回的是数组
 
//字符串
Array.from('abc');
//['a', 'b', 'c']
//类似于'abc'.split('')
 
//Set数据结构
var setObj = new Set(['a', 'b', 'c']);
var arr = Array.from(setObj);
console.log(arr);
//['a', 'b', 'c']
 
//箭头语法和映射函数
var arr = Array.from([1, 2, 3], x => x * 10);
//[10, 20, 30]


//Array.isArray()
Array.isArray([]);		//true
Array.isArray({});		//false
Array.isArray(null);	//false
 
//注意:typeof不能够区分对象和数组
typeof({}) === 'object'
typeof([]) === 'object'
typeof(null) === 'object'
typeof(undefined) === 'undefined'
typeof(0) === 'number'
typeof('0') === 'string'


//Array.of()
Array.of(1, 2, 3);		//[1, 2, 3]
new Array(1, 2, 3);		//[1, 2, 3]
//如果只有一个参数呢?
Array.of(3);			//[3]
new Array(3);			//[,,] 数组length为3,所有值均为undefined


//concat()连接数组
var a = [1, 2, 3];
var b = [4, 5];
var c = a.concat(b);			//[1, 2, 3, 4, 5]
//也可用于连接字符串
var d = c.concat('m', 'n');		//[1, 2, 3, 4, 5, m, n]


//entries数组迭代器
var e = ['a', 'b', 'c'].entries();
e.next().value	=== [0, 'a'];
e.next().value	=== [1, 'b'];
e.next().value	=== [2, 'c'];
//通过next()迭代返回数组的键值对
//keys和entries用法相似,但只返回键值
var e = ['a', 'b', 'c'].keys();
e.next().value	=== 0;
e.next().value	=== 1;
e.next().value	=== 2;


//every方法
//该方法用来确保数组中的所有成员是否都满足条件,是的话返回true,否则false
[1, 2].every(function(value){
	if(value === 1 || value === 2){
		return true;
	}else{
		return false;
	}
})
//true
 
//相对应的some方法
//该方法会升序对数组的每一个元素调用,若遇到返回true的,直接返回true,如果都为false,则返回false,可以理解为只要数组中有一个元素满足条件,则返回true
[1, 2, 3, 4].some(function(value){
	if(value === 3){
		return true;
	}else{
		return false;
	}
})
//true
[1, 2, 3, 4].some(function(value){
	if(value === 5){
		return true;
	}else{
		return false;
	}
})
//false


//fill方法
//fill(val, start, end)方法用于填充数组,第一个参数为值,第二个参数为开始位置索引,第三个参数为结束位置索引
[0, 0, 0].fill(7, 1);		//[0, 7, 7]
[0, 0, 0].fill(7);			//[7, 7, 7]
 
 
//filter方法
//返回数组中满足回调函数条件的元素
[1, 2, 3].filter(function(val){
	if(val === 1 || val === 2){
		return true;
	}else{
		return false;
	}
})
//[1, 2]


//findIndex方法
//用回调函数遍历数组,直到回调函数返回true,则返回相应的索引,如果一直没有,则返回-1
[1, 2, 3].findIndex(function(val){
	return val === 2 ? true : false;
})
//1(数值2的索引是1)


//forEach遍历
[1, 2, 3].forEach(function(val, index, arr){
	console.log(val);
})
//1 2 3


//indexOf方法
//用于判断数组中是否有相匹配的值,第二个参数表示从数组的某个开始位置往后检索
[1, 2, 3, 4, 2].indexOf(2);			//1
[1, 2, 3, 4, 2].indexOf(2, 2);		//4
//lastIndexOf表示从数组最后一个元素开始检索


//join方法拼接字符串
[1, 2, 3].join('-');
//1-2-3

//map方法
//注意:会返回一个新数组
[1, 2, 3].map(function(val){
	return val * 2;
})
//[2, 4, 6]


//pop方法,移除最后一个元素并返回这个元素,如果数组为空,返回undefined
[1, 2, 3].pop();	//3
//shift方法,类似pop方法,移除第一个元素并返回这个元素
[1, 2, 3].shift();	//3
//push方法,数组尾部追加元素,注意,这会更改原数组,并且返回的是新数组的长度,如果参数是一个数组的话,会当成一个元素添加进去
var arr = [1];
var a = arr.push(2, 3);		//a = 3, arr = [1, 2, 3]
var b = arr.push([4, 5]);	//b = 4, arr = [1, 2, 3, [4, 5]]
//unshift方法,数组头部追加元素,注意,这会更改原数组,并且返回的是新数组的长度,同于push方法
[1, 2, 3].unshift(9);	//4


//reduce方法
//对数组中的所有元素调用指定的回调函数,该回调函数的返回值为累计结果,并且在下一次调用该回调函数的时候作为参数提供
//reduce(callback, initialValue)
 
//第一种情况,没有初始值,第一次执行回调时,pre等于数组第一个元素,cur等于第二个元素
[1, 2, 3].reduce(function(pre, cur){
	return pre + '-' + cur;
})
//1-2-3
 
//第二种情况,有初始值,第一次执行回调时,pre等于初始值,cur等于第一个元素
[1, 2, 3].reduce(function(pre, cur){
	return pre + '-' + cur;
}, 8)
//8-1-2-3


//reduceRight方法
//类似于reduce方法,对数组是逆序操作
[1, 2, 3].reduceRight(function(pre, cur){
	return pre + '-' + cur;
})
//3-2-1
 
//运用此方法反转字符串
Array.prototype.reduceRight.call('12345', function(pre, cur){
	return pre + cur;
})
//54321


//reverse方法反转数组元素
//注意,此方法会修改原数组,并不会创建新数组
[1, 2, 3].reverse();
//[3, 2, 1]


//slice方法
//返回一个新数组,截取数组中的一部分,第一个参数为开始位置,第二个参数为结束位置,如果为负数的话,可以理解为数组的length加上这个start或者end的值,注意不包括end这个数
[1, 2, 3, 4].slice(1);		//[2, 3, 4]
[1, 2, 3, 4].slice(1, 2);	//[2]
[1, 2, 3, 4].slice(-1);		//[4]
[1, 2, 3, 4].slice(0, -1);	//[1, 2, 3]
 
//splice方法,从数组中移除元素,如有必要,在移除的位置上插入新的元素,并返回移除的元素
var a = [1, 2, 3, 4, 5, 6].splice(1, 2, 'a', 'b');
//a = [2, 3]
//数组变为[1, 'a', 'b', 4, 5, 6]


//sort方法排序
//注意,会操作原数组
[6, 2, 5, 1].sort(function(a, b){
	return a - b;
})


//toString方法
[1, 2, 3, 4].toString();
//1,2,3,4


//valueOf方法,返回指定对象的基元值
var arr = [1, 2];
var s = arr.valueOf();
arr === s
//true


//values方法,迭代器
var v = [1, 2, 3].values();
v.next().value === 1;
v.next().value === 2;
v.next().value === 3;

本文转载:CSDN博客