Javascript操作数组的几个函数整理
1、concat()
array.concat(value1, value2, ..., valueN); //其中value1、value2等可以数组也可以是字符串、数字等其他类型的数据
功能:将两个或两个以上个数组的元素抽取出来组合成一个新的数组。
1 strArr = ['a', 'b', 'c'] 2 numArr = [1,2,3,4,5] 3 str = 'String' 4 strArr.concat(numArr, str); => ["a", "b", "c", 1, 2, 3, 4, 5, "String"]
array.every(callback[element, index, array]),
功能:将数组中的每一个元素执行一次callback这个回调函数,只有当执行callback时每次都返回true,every函数才返回true,否则返回false
1 function isBig(element, index, array) { 2 return (element > 10); 3 }; //当参数element大于10返回true 4 [11,22,33,44,55].every(isBig) => true //因为每个元素都大于10,所以每次执行isBig函数是都返回true。只要其中有一个元素小于或等于10,则返回false
3、filter()
array.filter(callback[element, index, array]);
功能: 过滤。将数组中的每一个元素各执行一次callback函数,若返回true则该元素留下,否则该元素将被过滤掉。
1 function isBig(element, index, array) { 2 return (element > 10); 3 }; //当参数element大于10返回true 4 5 [11,44,2,7,55,2,19].filter(isBig) => [11, 44, 55, 19] //比10小的元素都被过滤掉了
4、forEach()
array.forEach(callback[element, index, array]);
功能: 与ruby语言中的each方法类似,遍历数组中的每个元组,可对每个元素进行各种操作。
1 var i = 0; 2 [1, 2, 3, 4, 5].forEach(function(element) { i += element; }); => i = 15
5、indexOf()
array.indexOf(searchElement[, fromIndex]);
功能: 查找某一元素在数组中的位置,返回的是第一个元素的下标号。
1 arr = [1,2,3,4,3,5,3]; 2 3 arr.indexOf(3); => 2 4 arr.indexOf(3, 3); => 4 //第二个参数是指明从第4个元素开始查找,结果略过第三个元素3,找到第5个元素3,所以返回4
拓展:lastIndexOf()函数与indexOf()函数相似,不同的是它从元素的后面开始查找。
6、join()
array.join(separator);、
功能: 将数组中的所有元素转换为字符串类型并链接起来。
1 arr = ['One', 'Two', 'Three']; 2 3 arr.join(); => "One,Two,Three" //默认链接时元素之间用逗号隔开 4 arr.join('*'); => "One*Two*Three"
7、map()
array.map(callback[, thisObject]);
功能: 遍历数组中的每一个元素,每次都返回数据作为新数组的最后一个元素,最终返回结果是一个数组。
1 [1,2,3,4,5].map(function(e){ return e + 10 }); => [11, 12, 13, 14, 15]
8、pop()
array.pop()
功能: 将数组的最后一个元素删除并返回这个被删除的元素。
1 arr = [1,2,3,4,5]; 2 arr.pop(); => 5 3 arr => [1,2,3,4]
9、push()
array.push(element1, element2, ... , elementN)
功能: 将参数插入至数组最后,返回数组的长度。
1 arr = [1,2,3,4,5]; 2 arr.push(33, 44, 55); => 8 3 arr => [1, 2, 3, 4, 5, 33, 44, 55]
10、reduce()
array.reduce(callback[, initialValue])
用法: callback函数里有四个参数:
previousValue: 先前值,默认为数组的第一个元素的值,也可自定义为其他值,如下面例子中的10
currentValue: 当前值,默认从数组的第二个元素开始,如果自定义了先前值,则从第一个元素开始
index: 数组元素的序号
array: 当前数组
功能: 对数组中的元素(从左到右)两两执行callback操作,返回最后一次操作的结果。
例子:
1 [0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ 2 return previousValue + currentValue; 3 }); => 10
1 [0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ 2 return previousValue + currentValue; 3 }, 10); => 20 //这里自定义了先前值
1 [1,2,3,4,5].reverse(); => [5,4,3,2,1]
1 arr = [1,2,3,4,5]; 2 arr.shift(); => 1; 3 arr; => [2,3,4,5]
- start为必需参数,所要选定元素的开头元素的下表
- end为可选参数,指选定的内容到该元素为止(所选取内容不包括下标为该参数的元素)
- 若参数为负数,则从尾部开始算起(start=-2,说明从数组倒数第二个元素开始选取内容,end也相同)
1 arr = [1,2,3,4,5]; 2 arr.slice(0); 3 => [1, 2, 3, 4, 5] 4 arr.slice(0, 1); 5 => [1] 6 arr.slice(-2, 5); 7 => [4, 5] 8 arr.slice(2,3); 9 => [3] 10 arr.slice(0, -2); 11 => [1, 2, 3]
1 function isBigger(element) { 2 return (element > 5); 3 }; 4 arr1 = [1,2,3,4,5]; 5 arr2 = [4,5,6]; 6 arr1.some(isBigger); 7 => false 8 arr2.some(isBigger); 9 => true
1 arr = [1,2,3]; 2 => [1, 2, 3] 3 arr.unshift(5,6,[7,8,9]); 4 => 6 5 arr; 6 => [5, 6, Array[3], 1, 2, 3]
1 function mySort(a,b){ //返回正数则a和b交换位置,返回0或负数则不交换 2 return b - a; 3 } 4 => undefined 5 arr = [1,4,2] 6 => [1, 4, 2] 7 arr.sort(mySort) 8 => [4, 2, 1]
1 var arr = new Array(3); 2 arr[0] = "George"; 3 arr[1] = "John"; 4 arr[2] = "Thomas"; 5 arr; 6 => ["George", "John", "Thomas"] 7 arr.toString(); 8 => "George,John,Thomas"