整理
1.push():最后一位新增
var arr = ["hello",true,45,{},"world"];
console.log(arr.push("123")); //6
console.log(arr); // ["hello", true, 45, {…}, "world", "123"]
arr.push(1);
console.log(arr); //["hello", true, 45, {…}, "world", "123", 1]
2.unshift():开头一位新增
var arr = ["hello",true,45,{},"world"];
console.log(arr.unshift(123)); //6
console.log(arr); //[123, "hello", true, 45, {…}, "world"]
arr.unshift(1)
console.log(arr); //[1, 123, "hello", true, 45, {…}, "world"]
3.pop():最后一位删除
var arr = [1,3,5,7,6];
console.log(arr.pop()); //6 (删除最后一个数字6)
console.log(arr); //[1, 3, 5, 7]
arr.pop(); //(删除最后一个数字7)
console.log(arr.pop()); //5 (因为在上一行代码已经删除7,输出的时候又删了一个数字得出5)
console.log(arr); //[1, 3]
4.shift():最后一位删除
var arr = [1,3,5,7,6];
console.log(arr.shift()); //1
console.log(arr); //[3, 5, 7, 6]
arr.shift();
console.log(arr.shift()); //5
5.reserve():数组元素逆序排序
var arr = ["hello",true,45,{},"world"];
arr.reverse();
console.log(arr); //["world", {…}, 45, true, "hello"]
var arr2 = [3,6,1,8,12];
console.log(arr2.reverse()); //[12, 8, 1, 6, 3]
6.concat():合并数组
var arr1 = ["hello",true,45,{},"world"];
var arr2 = [3,6,1,8,12];
console.log(arr1.concat(arr2)); //["hello", true, 45, {…}, "world", 3, 6, 1, 8, 12]
console.log(arr1); //["hello", true, 45, {…}, "world"]
7.slice(a,b):截取a到b,不包含b
var arr = [34,"a",67,"b","vc","html","hello"];
console.log(arr.slice(2,6)); //[67, "b", "vc", "html"]
console.log(arr); //[34, "a", 67, "b", "vc", "html", "hello"]
8.splice(a,b,c):截取a,截取b个,替换为c
var arr = [34,"a",67,"b","vc","html","hello"];
console.log(arr.splice(2,2,"html")); //[67, "b"]
console.log(arr); //[34, "a", "html", "vc", "html", "hello"]
arr.splice(2,2);
console.log(arr); //[34, "a", "html", "hello"]
arr.splice(2,0,"html");
console.log(arr); //[34, "a", "html", "html", "hello"]
arr.splice(2,2,"html","css","js");
console.log(arr); //[34, "a", "html", "css", "js", "hello"]
9.sort:排序
var arr = [5166666,7,369,104,9];
// sort:默认会按照字符的排序规则,升序
// 需要传入回调函数,在回调函数身上右接收两个参数,返回这两个参数的差,可以按照数值的排序规则进行排序
arr.sort(function(a,b){
return b-a; //降序
});
console.log(arr); //[5166666, 369, 104, 9, 7]
arr.sort();
console.log(arr); //[104, 369, 5166666, 7, 9] (按照字符的排序规则升序)
10.indexOf(a,b);
检测数组中是否存在指定数据a,从索引b开始检测,存在返回索引,不存在返回-1
var arr = ["a","45",67,true,"hello",67,45,25,13,89];
console.log(arr.indexOf(67)); //2
console.log(arr); //["a", "45", 67, true, "hello", 67, 45, 25, 13, 89] 原数组
console.log(arr.indexOf("world")); //-1
// console.log(arr.indexOf("a"));
console.log(arr.indexOf(67,3)); //5 从索引3开始检测是否有67
console.log(arr.indexOf(67,6)); //-1
11.forEach(callback)
数组的专属遍历方法,在回调函数身上又有三个参数,该项的值,该项的索引,数组本身
var arr = ["a","45",67,true,"hello",67,45,25,13,89];
var f = arr.forEach(function(val,idx,self){
console.log(val); //a "45" 67.......
console.log(idx); //0 1 2 3 4 ......
})
console.log(f) //undefined 无返回值
console.log(arr); //原数组
//var arr = ["a","45",67,true,"hello",67,45,25,13,89];
// var f = arr.forEach(function(val,idx,self){
// return val + "a"
// })
// console.log(f) //数组的每一个都加上a
12.map
不是专门用来遍历,但是可以实现遍历,格式同forEach
主要功能:用来获取数组中的数据,并返回成新的数组
var m = arr.map(function(val,idx,self){
// console.log(val,idx,self)
return val + "a";
})
console.log(arr); // ["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]
console.log(m); // ["aa", "45a", "67a", "truea", "helloa", "67a", "45a", "25a", "13a", "89a"]
13.filter
不是专门用来遍历,但是可以实现遍历,格式同forEach
主要功能:过滤,回调函数每次返回值为true,会将这个遍历到的值放到新数组中,在filter结束后,返回这个数组,如果为false则跳过
var f = arr.filter(function(val,idx,self){
return typeof val === "string";
})
console.log(f); // ["a", "45", "hello"]
14.some
检测数组中是够满足指定条件,如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行,如果没有满足条件的元素,则返回false(不会对空数组就行检测)
var f = arr.some(function(val){
if(val == 67){
return val;
}
})
console.log(f); //true
var f = arr.some(function(val){
if(val == "cvb"){
return val;
}
})
console.log(f); //false
console.log(arr); //["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]
15.every
判断数组中是否每个元素都满足条件条件,全部满足返回true,有一个不满足返回false
var f = arr.every(function(val){
if(val == 67){
return val;
}
})
console.log(f);; //false
console.log(arr); //["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]
16.reduce
reduce(callbackfn,[initslValue]),入参方式从右往左
reduce()方法接受callback函数,这个函数包含四个参数
preValue:上一次调用返回的值,或者是提供的初始值
curValue:数组中当前被处理的数组项
index,当前数组项的数组中的索引值
array:调用array()方法的数组
//1、求数组各项和
var arr = [1,2,3,0,4,5];
var sum = arr.reduce(function(pre,cur){
return pre + cur;
})
console.log(sum); //16
//2、取最大值
var max = arr.reduce(function(pre,cur){
return Math.max(pre,cur);
})
console.log(max); //5
//3.数组去重
var norepeat = arr.reduce(function(pre,cur){
pre.indexOf(cur) === -1 && pre.push(cur);
return pre;
},[])
console.log(norepeat); //[1,2,3,0,4,5,1]
//还可以求阶层(pre*cur),就幂次方(pre**cur)
//4.将二维数组转换成一维数组
var arr1 = [[1,2],[3,4]];
var str = arr1 .reduce(function(prev,cur){
return prev.concat(cur);
})
console.log(str); //[1,2,3,4]
17.reduceRight
reduceRight(callbackfn,[initslValue]),和reduce()方法基本一样,但是入参方式从左往右
//1、求和
var arr = [1,2,3,0,4,5,1];
var sum = arr.reduceRight(function(pre,cur){
return pre + cur;
})
console.log(sum); //16
//2、求最大值
var max = arr.reduceRight(function(pre,cur){
return Math.max(pre,cur);
})
console.log(max); //5
//3、数组去重,倒序
var norepeat = arr.reduceRight(function(pre,cur){
pre.indexOf(cur) === -1 && pre.push(cur);
return pre;
},[])
console.log(norepeat); //[1, 5, 4, 0, 3, 2]
//还可以求阶层(pre*cur),就幂次方(pre**cur)
//4.将二维数组转换成一维数组
var arr1 = [[1,2],[3,4],[7,8]];
var str = arr1 .reduceRight(function(prev,cur){
return prev.concat(cur);
})
console.log(str); //[7, 8, 3, 4, 1, 2]
18.join
把数组中的所有元素放入一个字符串
//1、join方法的参数不传或者传入undefined会默认用逗号分隔。
var arr1 = [1,2,3,4];
var arr2 = [];
arr2 = arr1.join(undefined);
console.log(arr2); //1,2,3,4
console.log(arr1); //[1, 2, 3, 4]
//2、
arr2 = arr1.join("、");
console.log(arr2); //1、2、3、4
总结
序号 | 数组方法 | 功能 | 返回值 | 是否改变原数组 |
---|---|---|---|---|
1 | push | 数组的尾部添加一个元素 | 返回添加元素后数组长度 | 是 |
2 | unshift | 数组首部添加一个元素 | 返回添加元素后数组长度 | 是 |
3 | pop | 删除数组尾部一个元素 | 返回删除的元素 | 是 |
4 | shift | 删除数组第一个元素 | 返回删除的元素 | 是 |
5 | reserve | 数组元素逆序排列,不创建新的数组 | 返回逆序后的数组 | 是 |
6 | concat | 创建并返回一个新的数组,注意参数是数组 | 返回原数组和参数数组合并后的新数组 | 否 |
7 | slice(a,b) | 排序,默认按照字符的规则做升序 | 返回排序后的数组 | 是 |
8 | splice(a,b,c) | 在数组中插入或删除元素的通用方法,能同时删除和插入,删除a到b,替换为c | 返回删除的元素组成的数组 | 是 |
9 | sort | 排序,默认按照字符的规则做升序 | 返回排序后的数组是 | |
10 | indexof(a,b,c) | 检测是否含指定数据 | 返回索引值,没有则返回-1 | 否 |
11 | forEach(callback)forEach(functhion(val,idx,self ) | 遍历数组 | 返回数组的值、数组的索引数组本身(n次) | 否 |
12 | map | 将调用的数组的每个元素传递给指定的函数,并返回一个新数组,这个数组包含该函数的返回值 | 函数返回值组成的新数组 | 否 |
13 | filter | 过滤,比较函数返回true或false | 返回调用数组的一个子集 | 否 |
14 | some | 遍历,检测数组中是否有符合条件的数据 | 有ture,无false | 否 |
15 | every | 遍历,检测数组中是否有所有数据都符合条件 | 全部都是ture,一个不是false | 否 |
16 | reduce | 迭代数组的所有项,然后构建一个最终返回值(左向右) | 函数处理的结果 | 否 |
17 | reduceRight | 迭代数组的所有项,然后构建一个最终返回值(右向左) | 函数处理的结果 | 否 |
18 | join | 数组转字符 | 返回字符串 | 否 |