js中,数组的使用频率是很高的,现在将一些常用的方法进行了总结,供大家参考。
push()
作用:在数组末尾添加一项或多项。
返回值:修改后数组的长度。
是否改变原数组:是
式例:
var arr1 = [1, 2];
arr1.push(3, 4); // 4
console.log(arr1); // [1,2,3,4]
pop()
作用:移除数组中的最后一项
返回值:原数组的最后一项
是否改变原数组:是
示例:
var arr1 = [1, 2, 3];
arr1.push(3); // 3
console.log(arr1); // [1,2]
unshift()
作用:向数组头部添加一项或多项
返回值:修改后数组的长度
是否改变原数组:是
示例:
var arr1 = [1, 2, 3, 4];
arr1.unshift(5, 6); // 6
console.log(arr1); // [1,2,3,4,5,6]
shift()
作用:移除数组中的第一项
返回值:原数组的第一项
是否改变原数组:是
示例:
var arr1 = [1, 2, 3];
arr1.shift(); // 1
console.log(arr1); // [1,2]
reverse()
作用:将原数组反转后的序列
返回值:原数组反转后的序列
是否改变原数组:是
示例:
var arr1 = [1, 4, 6, 3, 2];
arr1.reverse();
console.log(arr1); // [2,3,6,4,1]
sort()
作用:将数组中的元素按照一定规则排序,默认是按照字符编码的顺序从小到大进行排序
返回值:排完序后的数组
是否改变原数组:是
示例:
// 按照字符编码的顺序从小到大排序
var arr1 = [1, 4, 8, 10, 20];
arr1.sort();
console.log(arr1); // [1,10,20,4,8]
// 按照数值大小,从小到大排序
var arr2 = [1, 3, 5, 7, 12, 22];
arr2.sort(function(a, b) {
return a - b;
});
console.log(arr2); // [1, 3, 5, 7, 12, 22]
indexOf() & lastIndexOf()
作用:查找指定元素在数组中的位置
返回值:indexOf返回第一次查找到指定元素的索引,lastIndexOf则为从数组尾单开始遍历数组,如没有找指定的元素,则返回-1
是否改变原数组:否
示例:
var arr1 = [1, 2, 3, 4, 3, 5];
var n1 = arr1.indexOf(3);
var n2 = arr1.indexOf(8);
console.log(n1); //2
console.log(n2); //-1
lastIndexOf()方法与indexOf()类似,该方法从数组尾部开始遍历
concat()
作用:将若干个数组连接成一个新的数组
返回值:返回连接后的新数组
是否改变原数组:否
示例:
var arr1 = [1, 2];
var arr2 = [3, 4];
var arr3 = [5, 6];
console.log(arr1.concat(arr2, arr3)); // [1,2,3,4,5,6]
slice()
作用:截取数组
返回值:截取后得到的数组
是否改变原数组:否
示例:
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
var arr2 = arr1.slice(2, 5);
console.log(arr1); // [1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr2); // [3, 4, 5]
// 参数中出现负数,则加上数组的长度
var arr3 = arr1.slice(2, -3);
console.log(arr3); // [3, 4, 5] 效果和arr1.slice(2,5)相同
// 若第一个参数值大于第二个参数值,则返回空数组
var arr4=arr1.slice(6,3);
console.log(arr4); // []
splice()
作用:具有删除、替换、插入的功能
返回值:返回删除的元素组成数组,若原数组没有元素删除,则返回空数组
是否改变原数组:是
示例:
// 纯删除操作:
// 第一个参数为起始位置,第二个参数为删除的项数
var arr1 = ["a", "b", "c", "d", "e", "f", "g", "h"];
var arr2 = arr1.splice(1, 3);
console.log(arr1); // ["a", "e", "f", "g", "h"]
console.log(arr2); // ["b", "c", "d"]
//纯插入操作
//第一个参数为起始位置,第二个参数为0,剩余参数为所要插入的元素,从起始位置前方开始插入
var arr1 = ["a", "b", "c", "d", "e", "f", "g", "h"];
var arr2 = arr1.splice(1, 0, 1, 2, 3);
console,log(arr1); // ["a", 1, 2, 3, "b", "c", "d", "e", "f", "g", "h"]
console.log(arr2); // []
//替换操作
//第一个参数为起始位置,第二个参数为要删除元素的个数,后面的元素为从起始位置前面插入的元素
var arr1 = ["a", "b", "c", "d", "e", "f", "g", "h"];
var arr2 = arr1.splice(2, 2, 1, 2, 3);
console.log(arr1); // ["a", "b", 1, 2, 3, "e", "f", "g", "h"]
console.log(arr2); // ["c", "d"]
every()
作用:检测数组中的每一项是否都符合指定的条件
返回值:true or false
是否改变原数组:否
示例:
var arr1 = [2, 4, 6, 8];
var flag1 = arr1.every(function(item) {
return item > 5;
});
console.log(flag1); //flase
var flag2 = arr1.every(function(item) {
return item > 1;
});
console.log(flag2); //true
some()
作用:检测数组中是否存在一项符合指定的条件
返回值:true or false
是否改变原数组:否
示例:
var arr1 = [2, 4, 6, 8];
var flag1 = arr1.some(function(item) {
return item > 5;
});
console.log(flag1);
map()
作用:遍历数组,对数组中每一项进行相关操作
返回值:返回一个新数组
是否改变原数组:否
示例:
var arr1 = [1, 2, 3, 4];
var arr2 = arr1.map(function(item, index) {
return item * 2 - 1;
});
console.log(arr1); //(4) [1, 2, 3, 4]
console.log(arr2); //(4) [1, 3, 5, 7]
filter()
作用:遍历数组,对数组中每一项进行筛选
返回值:返回筛选后得到的新数组
是否改变原数组:否
示例:
var arr1 = [2, 4, 6, 8, 10, 12, 14];
var arr2 = arr1.filter(function(item) {
return item > 6;
});
console.log(arr1); // [2,,4,6,7,10,12,14]
console.log(arr2); // [8,10,12,14]
forEach()
作用:单纯的遍历数组
返回值:该方法没有返回值
是否改变原数组:是
示例:
var arr1 = [1, 2, 3];
arr1.forEach(function(item, index, arr1) {
arr1[index] = item + 2;
});
console.log(arr1); //(3) [3, 4, 5]