js数组方法笔记

328 阅读4分钟

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]