js数组
1. Array.from()
从一个类数组或可迭代对象中创建一个新的数组实例。
Array.from('qui'); //["q", "u", "i"]
Array.from([1, 2, 3], x=> x + x); //[2, 4, 6]
2. Array.isArray()
判断传入的参数是否是数组
Array.isArray([1, 2, 3]); //true
Array.isArray("quinn"); //false
3. Array.prototype.every()
测试数组的所有元素是否都通过了指定函数的检测
var array1 = [1, 3, 5, 7, 9];
array1.every( value => (value < 40) ); //true
array1.every( value => (value > 40 )); //false
4. Array.prototype.filter()
创建一个新数组,其包含通过所提供函数实现的测试的所有元素(其实也就是按回调函数传入的条件对数组进行过滤)。
var array1 = [1, 4 ,7, 1, 78];
var result = array1.filter( x => x > 77); // [78]
5. Array.prototype.find() 和 Array.prototype.findIndex()
find()返回数组中满足提供的函数的第一个元素的值,不存在则返回 undefined。
var array1 = [3, 23, 6, 45, 99];
array1.find( x=>(x > 4) ); //23
findIndex()返回数组中满足提供的函数的第一个元素的下标值, 不存在则返回 -1.
array1.findIndex( x => (x > 4) ); //1
6. Array.prototype.foreach(item, index, array);
对数组每个元素执行一次传入的函数。
var array1 = [2, 4, 5];
array1.forEach( (item, index, array) =>{
console.log( "item: " + item + "; index: " + index + " ; array: " + array + "\n")
} ); //item: 2; index: 0 ; array: 2,4,5
//item: 4; index: 1 ; array: 2,4,5
//item: 5; index: 2 ; array: 2,4,5
7. Array.prototype.includes()
判断一个数组是否包含一个指定的值
var array1 = [1 ,3, 7];
array1.includes(2); //false
array1.includes(1); //true
8. Array.prototype.indexOf(element, fromIndex)
返回在数组中可以找到的element的第一个索引,如果不存在则返回 -1。
var array1 = [1, 'a', 'a', 'bbb', 1, 'a'];
var indexArr = [];
//找到a出现的坐标
var index = array1.indexOf('a');
while(index != -1){
indexArr.push(index);index = array1.indexOf('a', index+1)
};
console.log(indexArr); //[1,2,5]
9. Array.prototype.join()
将一个数组(或类数组)的所有元素连成一个字符串,默认以 ”,“连接。
var a = [1, "aaa", true];
a.join(); // "1,aaa,true"
a.join("-"); // "1-aaa-true"
a.join(null); // "1nullaaanulltrue"
a.join(undefined); // "1,aaa,true"
10. Array.prototype.map()
数组中的每个元素都调用提供的函数后返回的结果。
var array1 = [1, "rrr", true];
array1.map( x=>x+2 ); // [3, "rrr2", 3]
11. Array.prototype.pop()
从数组中删除最后一个元素,并返回该元素的值。
var array1 = [1, 'a', true, undefined, 22];
array1.pop(); //22
array1.pop(); //undefined
array1.pop(); //true
12. Array.prototype.push()
在数组末尾加入一个元素。
var array1 = [1, "a", true, undefined, 22];
array1.push(33); //返回数组长度6;
console.log(array1); // [1, "a", true, undefined, 22, 33]
array1.push(null); //7
console.log(array1); // [1, "a", true, undefined, 22, 33, null]
array1.push(undefined); // 8
console.log(array1); // [1, "a", true, undefined, 22, 33, null, undefined]
13. Array.prototype.reverse()
数组倒置。
var array1 = [1, 2, true, "sss"];
array1.reverse(); //["sss", true, 2, 1]
14. Array1.prototype.shift()
删除数组第一个元素并返回此元素。
var array1 = [1, 2, true, "aaa"];
array1.shift(); // 1
console.log(array1); // [2, true, "aaa"]
array1.shift(); // 2
console.log(array1); // [true, "aaa"]
15. Array.prototype.slice()
从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组。
我一般直接记成传个坐标,取从坐标开始的元素组成新数组。
var array1 = [1, "a", true, undefined, 22, {obj: "m"}];
array1.slice(2); // [true, undefined, 22, {obj: "m"}]
console.log(array1); // [1, "a", true, undefined, 22, {obj: "m"}]
array1.slice(5); // [{obj: "m"}]
console.log(array1); // [1, "a", true, undefined, 22, {obj: "m"}]
array1.slice(6); // []
console.log(array1); // [1, "a", true, undefined, 22, {obj: "m"}]
16. Array.prototype.some()
测试数组中的某些元素是否通过由提供的函数实现的测试。
其实也就是看数组里面有没有元素满足这个条件,只要有一个满足就返回true.
var array1 = [1, 4, 55, 23];
array1.some( x=>x>50 ); // 55大于50,找到一个满足条件的 返回 true
array1.some( x=>x>60 ); // 没有任何元素大于69,返回 false
17. Array.prototype.sort()
数组排序,默认按UUnicode()排序。
var array1 = [1, 45, 6, 23, 77, 8];
array1.sort(); // [1, 23, 45, 6, 77, 8]
console.log(array1); // [1, 23, 45, 6, 77, 8]
var array1 = [1, 45, 6, 23, 77, 8];
//升序
array1.sort( (a, b)=> a - b ); // [1, 6, 8, 23, 45, 77]
console.log(array1); // [1, 6, 8, 23, 45, 77]
//降序
array1.sort( (a, b)=> b-a ); // [77, 45, 23, 8, 6, 1]
console.log(array1); // [77, 45, 23, 8, 6, 1]
源代码: 710行开始
18. Array.prototype.unshift()
将1到n个元素添加到数组的开头。
var array1 = [1, "b", "c", true];
array1.unshift(undefined, 2, null, [3, 4, 5], {name: "quninn"}); //9
console.log(array1); // [undefined, 2, null, [3, 4, 5], {name: "quninn"}, 1, "b", "c", true]
这是都是从MDN选了一些记录,本来不想选这么多,无法记住,但是难以取舍,所以还是记了好多。便于自己以后查阅吧,文中例子都经过谷歌控制台验证。
2018-9-7更新
总结一下以上方法哪些改变原数组,哪些不改变吧。