一、ECMScript 3中数组的操作方法
1.push和pop
push在数组的末尾添加一个或者多个元素,返回新数组的长度。所以不能链式操作
pop删除数组的最后一个元素,返回它删除的值元素
var arr = [1, 2, 3, 4, 5]; var arr1=arr.push(6); console.log(arr1)//6 console.log(arr)//[1,2,3,4,5,6] var arr2 = arr.pop(); console.log(arr2)//6 console.log(arr);//[1,2,3,4,5]
2.unshifh和shift
unshift是在数组头部添加一个或多个元素。如果一次性传入多个参数,多个参数按照按照原先的位置直接加到数
组中。返回新数组的新数组的长度。
shift:删除数组的第一个元素,并返回删除的元素
var arr = [1, 2, 3, 4, 5]; var arr1=arr.unshift(6); console.log(arr1)//6 console.log(arr)//[6,1,2,3,4,5] var arr2 = arr.unshift(); console.log(arr2);//6 console.log(arr);//[1,2,3,4,5]
3.concat
concat 连接 该方法的作用是给数组连接新成员 参数有任意个,都是会被拼接到新数组中的成员 如果参数中有数组 会把这个数组拆开
var arr = [1]; var arr1 = [2, 3]; // 把arr 和 arr1 连接起来 var arr2 = arr.concat(10, 20, 33, arr1); console.log(arr2);//[1,10,20,33,2,3]
4.reverse
将一个数组逆序 返回值是原数组 也会影响到原数组
var arr = ["a", "b", "c", "d", "e"]; var arr1 = arr.reverse(); console.log(arr);//["e", "d", "c", "b", "a"] console.log(arr1);//["e", "d", "c", "b", "a"]
5.sort
排序
var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8]; //如果不传递参数 会按照第一位数的数字从小到大排序 arr.sort(); console.log(arr);//[1, 11, 345, 4, 44, 5, 6, 67, 78, 8, 89] //如果传递参数 参数是一个函数 该函数有两个参数 a b 如果返回a - b 则升序排列 如果 返回b - a则降序排列 arr.sort(function(a, b) { return b - a; }); console.log(arr);//[345, 89, 78, 67, 44, 11, 8, 6, 5, 4, 1]
6.join
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; console.log(arr.join(""));//12345678
7.slice(start,end)
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; var arr1 = arr.slice(2, 6); // [3, 4, 5, 6] var arr2 = arr.slice(2); // [3, 4, 5, 6, 7, 8] var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8] var arr4 = arr.slice(0, -1); // [1, 2, 3, 4, 5, 6, 7]; var arr5 = arr.slice(-4, -1); // [5, 6, 7] var arr6 = arr.slice(-4); // [5, 6, 7, 8]
8.splice
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; //1 将3移除 var result = arr.splice(2, 1); console.log(arr); console.log(result); // 2 将3替换成9 var result = arr.splice(2, 1, 9); console.log(arr); console.log(result); //3 在5前面插入5个1 var result = arr.splice(4, 0, 1, 1, 1, 1, 1); console.log(arr); console.log(result); //4 当都只传递1个参数时 默认从该位置往后都移除 var result = arr.splice(1); console.log(arr); console.log(result);
二、ECMScript 5中的数组方法
1、forEach() //遍历
该方法从头到尾遍历数组,为某个元素调用指定的函数。传递函数包括三个参数(数组元素、元素索引、数组本身
),如果只关心数组元素的值,可以只传一个参数。
注意:无法在所有元素的都传递给调用函数之前提前结束。也就是没有像for中一样的break语句。如果要提交终止,可以
把forEach()方法放到try块中。如果forEach()调用的函数抛出forEach.break异常,循环提前结束
var data = [1,2,3]; var sum = 0; data.forEach(function(value){ sum+=value; }); console.log(sum); //6 var data = [10,20,30]; data.forEach(function(v,i,a){ a[i] = v*2; }); console.log(data) //[20, 40, 60]
2、map() //映射
定义:将调用的数组的每个元素传递给指定的函数,并返回一个新数组,它包含该该函数的返回值
注意:传递给map的函数应该有返回值,返回的是新数组,不修改调用的数组。
var data3 = [1,2,3]; var b = data3.map(function(val){ return val*10; }); console.log(data3); //[1,2,3] 不改变原数组 console.log(b); //[10,20,30] 新数组
3、filter() //过滤
定义:返回的数组元素是调用的数组的一个子集,就传递的函数是用来做逻辑判定的,返回true,传给给判定函数的元素就是这个子集的成员。
var data4 = [1,2,3,4,5]; var b2 = data4.filter(function(val){ return val<3; }); console.log(b2); //[1,2] console.log(data4); //[1,2,3,4,5] 不改变原数组 var b3 = data4.filter(function(val,i){ return i%2; }); console.log(b3); //[2,4] 返回索引为奇数的元素组成的数组
4、every()
var arr = [1, 2, 3, 4, 5, 6, 7]; var result = arr.every(function(value, index, self) { return typeof value === "number"; }); console.log(result);//true
5.some()
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; var result = arr.some(function(value, index, self) { console.log(value); return typeof value === "string"; }); console.log(result);//false
6、reduce()
定义:使用指定的函数将数组元素进行组合,生成一个单值。参数一是执行简化操作的函数,参数二是传给简化函数的初始值。
注意:一旦确认之后,就停止遍历数组了。
var data5 = [1,2,3]; var sum = data5.reduce(function(x,y){ return x+y; },0); console.log(sum); //6 var product = data5.reduce(function(x,y){ return x*y; },100); console.log(product); //600
7、indexOf()和lastIndexOf()
定义:搜索整个数组中具有给定值的位子,返回找到第一个元素的索引,如果没有找到就返回-1;indexOf()是从头找到尾,lastIndexOf()正好相反
注意:不接受函数作为参数,第一个参数是需要搜索的值,第二个参数是可选的,表示从哪里搜索,可以是负数,表示相对数组末尾的偏移量。
说明:字符串也有这两个方法,功能类似。
var data6 = [1,2,3,3,4,3,5]; console.log(data6.indexOf(3)); //2 第一个3的索引是2
8.fill()
var arr = [1, 2, 3, 4, 5, 6]; // 将数组的每一个成员都填充为0 arr.fill(0); // 将数组的从第二个开始往后都填充为0 arr.fill(0, 1); // 将数组的从第二个开始到第四个填充为0 arr.fill(0, 1, 4); console.log(arr);
三、ECMScript 6中的数组方法
1.find()
var arr=["12","23","345","45"] var result = arr.find(function(value,index,self){ return value.indexOf(23) !=-1; }) console.log(arr)//["12","23","345","45"]
console.log(result)//23
2.findIndex()
var arr = ["张三", "李四", "王五", "赵六", "田七"]; var usernameIndex = arr.findIndex(function(value, index, self) { return value.indexOf("五") != -1; }); console.log(usernameIndex)//2
3.copyWithin()
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.copyWithin(0, 5, 7); console.log(arr);//[6, 7, 3, 4, 5, 6, 7, 8, 9]
4.Array.of()
var arr = Array.of(5,6,78,9) console.log(arr); var arr1 = Array.of(5); var arr2 = new Array(5):
5.Array.from()