JavaScript数组常用方法归纳

版权声明: https://blog.csdn.net/wlk2064819994/article/details/80574541

不做完整的介绍,只介绍自己用的比较多的数组方法,ES3、ES5、ES6都有涉及。

ES3中常用:

join:将数组的所有元素都转换成字符串并拼接在一起,返回最后生成的字符串。默认使用逗号。
reverse:将数组中的元素颠倒顺序,返回逆序的数组(不是新数组)。

sort:传递比较函数,将数组元素进行排序。

concat:返回新数组。

var a = [1,2,3];
console.log(a.concat(4,5))//[1,2,3,4,5]
console.log(a.concat([4,5]))//[1,2,3,4,5]
console.log(a.concat([4,5],[6,7]))//[1,2,3,4,5,6,7]

slice:1,返回一个从原数组切出来的新数组。2.两个参数(第一个表示起始位置,第二个表示结束位置,前闭后开)。如果参数是负数,表示从后往前数,-1表示最后一个,-2表示倒数第二个,以此类推。

var b = [1,2,3,4,5,6,7];
console.log(b.slice(1,4));//[2,3,4]
console.log(b.slice(-3,-1));//[5,6]

splice:这个方法比较重要,用的比较多。它是在数组中插入、删除和替换元素的通用方法。
1.返回新数组。2.原数组也会被改变。3.splice最少一个参数。

//splice删除数组元素
var c = [1,2,3,4,5,6,7,8,9];
var d = c.splice(4);//从下标4开始删除,返回被删除部分[5,6,7,8,9],原数组变成:[1,2,3,4]
console.log(d);

var e = [1,2,3,4,5,6,7,8,9];
var f = e.splice(2,3);//从下标2开始删除3个数,返回被删除部分[3,4,5],原数组变成:[1,2,6,7,8,9]
console.log(f);
console.log(e);

//splice插入元素:第一个参数表示起始位置,第二个参数为0(删除0个),其他参数表示插入的元素。
var g = [1,2,3,4,5];
console.log(g.splice(1,0,7,8,9));////返回的新数组为[],因为并没有删除元素。
console.log(g);//g变成[1,7,8,9,2,3,4,5]

//替换元素:删除并插入
var h = [1,2,3,4,5,6,7];
console.log(h.splice(2,2,8,9));//从下标2开始删除两个,并添加8,9.返回的数组[3,4]。
console.log(h);//[1,2,8,9,5,6,7]

ES5中常用:

ES5新增的方法概述:大多数ES5数组方法都接受一个函数作为第一个参数,并且该函数大多数情况使用三个参数:数组元素、元素索引、数组本身 。数组方法的第二个参数是可选的,如果有第二个参数,则它会被视为第一参数(即函数)的this值

forEach:从头至尾遍历数组,为每个元素调用指定的函数。forEach无法使用break等提前终止,除非故意报错退出。

var data = [1,2,3,4,5];
var sum = 0;
data.forEach(function(v){
	sum+=v;
})
console.log(sum);//15
data.forEach(function(v,i,arr){
	arr[i] = v+1;//每个元素加1
});
console.log(data);

map:返回新数组,传递给map的第一个参数(即一个函数)应该有返回值。

var mapA = [1,2,3];
var mapB =mapA.map(function(v){
	return v*2;
});
console.log(mapA);//[1,2,3]
console.log(mapB);//[2,4,6]

filter:返回原数组的一个子集。传递的函数是用来逻辑判断的:该函数返回true或false。如果返回true或者能转换为true,那么该元素将成为子集的成员。

var fA = [5,4,3,2,1];
var smallF = fA.filter(function(v){
	return v<3;
});
console.log(smallF);//[2,1]
var indexF = fA.filter(function(v,i){
	return i%2 ==0;
});
console.log(indexF);//[5,3,1]


every和some:它们对每个数组元素应用指定函数进行判定,返回true或false。这两个数组方法的最终返回值是true或者false。
只是在所有元素的判定都返回true时every才返回true;而some是只要部分判定返回true时,some就返回true。简单点说,every是数学量词“所有”,some是数学量词“存在”

var EvE = [1,2,3,4,5];
var T = EvE.every(function(x){
	return x<10;
});//T为true。所有元素都小于10.
var F = EvE.some(function(x){
	return x%2 === 0;
});//F为true。EvE存在偶数

reduce,reduceRight:这两个方法使用指定函数将数组元素进行组合,生成单个值。这两个方法的原理相同,只是前者索引从低到高,后者索引从高到低。
    reduce()接受两个参数第一个是执行化简操作的函数,化简函数的任务就是将两个值组合或化简为一个值并返回。第二个可选参数是传递给化简函数的初始值
    化简函数可以接受4个参数:第一个是化简返回值,第一次调用时,它是初始值即reduce的可选参数。第二个是数组元素。第三个是元素索引。第四个是数组本身。当然不必全部传入。

var RA = [1,2,3,4,5];
var sumR = RA.reduce(function(returnV,Value,Index,Arr){
	return returnV+Value;
},0);
console.log(sumR);//15
var sumNo = RA.reduce(function(rv,nv){
	return rv+nv;
})
console.log(sumNo);//在reduce不传第二个参数时,初始值就变为数组的第一个元素

ES6中常用:

Array.from():将类数组对象和可遍历对象转化为真正的数组。

let arrayLike = {
	0:"a",
	1:"b",
	2:"c",
	length:3
};
console.log(Array.from(arrayLike));
console.log(Array.from("hello"));

find:找到第一个符合条件的数组成员,如果没有符合条件的就返回undefined。
findIndex:找到第一个符合条件的数组成员的下标,如果都不符合,则返回-1.

var m = [1,2,3,4,-5].find(function(value,index,arr){//当然也可不必全写
	return value<0;
});
console.log(m)

entries()、keys()、values()都返回一个遍历器对象,可用for...of循环遍历。entries()返回键值对,keys()返回所有键(下标),values()返回所有值

for(let [index,elem] of ["a","b","c"].entries()){
	console.log(index,elem);
}

includes():返回布尔值,判断数组是否包含给定的值。与字符串的includes方法类似。

var bo = ["a","b","c"].includes("b");
console.log(bo);

该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,表示从数组尾部开始,如果这时它的绝对值大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。

console.log([1,2,3].includes(3,3))//false,起始位置超过数组长度。
console.log([1,2,3].includes(2,-1))
//false,找2,从最后一个位置,注意一点,第二个参数为负值时也是往数组尾部找,而不是从后往前找。

猜你喜欢

转载自blog.csdn.net/wlk2064819994/article/details/80574541