数组常用操作 后续会补充

var s="A man, a plan, a canal: Panama"

1.数组去掉空格和标点符号并转为大写

var str=s.replace(/(\W|_)/g,"").toUpperCase();

2.数组删除指定下标

第一种   splice  (删除的同时把该元素所占的空间也删除  ,后面向前补)

arr.splice(a,b)  //a为删除的指定下标   b为从a下标开始删除几个

   splice还有多种用法  

            var  c=['a','b','c','d','e','f'];    

           1.添加    c.splice(1,0,'str'); //结果arr=['a','str','b','c','d','e','f'];

           2.替换: c.splice(1,1,'str'); //结果arr=['a','str','c','d','e','f'];

            这两种用法  括号里的值代表(指定下标0为添加  大于0的都为替换数量 也就是说 从当前下标要替换几个, 要添加或者替换的值 )

第二种   delete    (只删除元素  ,当前元素下标为  undefined)

delete  arr[下标];

3.把数组通个某个符号连接起来拼成一个字符串

var arr1=['你','好','哇'];

var arr1str=arr1.jion(',')     //括号里需要加引号哦     输出你,好,哇

在把字符串变成数组则可以用 split(‘,’) //也需要引号    输出 ['你','好','哇']


4.数组合并  (返回一个新的数组)

(参考https://www.jb51.net/article/172722.htm)

var a=[1,2,3];

var b=[4,5,6];

第一种    concat()  

    js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果,a和b不变数据不变。

var c = a.concat(b); //c=[1,2,3,4,5,6];

这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费,如果是数据量比较小的时候,还可以勉强用,如果数据量大的时候,这个就不妥了,所以这个方法肯定不是最好的。

第二种 for循环

遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。直接上代码:

for( var i in b){

  a.push(b[i]);

}

这样的写法可以解决第一种方案中对内存的浪费,但是会有另一个问题:丑!这么说不是没有道理,如果能只用一行代码就搞定,岂不快哉~

第三种 apply

函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。所以我们可以利用这点,直上代码:

a.push.apply(a,b);

调用a.push这个函数实例的apply方法,同时把,b当作参数传入,这样a.push这个方法就会遍历b数组的所有元素,达到合并的效果。

这里可能有点绕,我们可以把b看成[4,5,6],变成这样:

a.push.apply(a,[4,5,6]);   等同于  a.push(4,5,6);

5. 数组去重

第一种  for循环 

创建一个新的空数组  ,用for循环遍历进去 同时查看一下是否有重复的  如果是多数组 可以先合并!!!

var one=[];

for(var i =0 ; i

if(one.indexOf(a[i])<0){   //查看当前one数组里面有没有a[i]  没有会返回-1  有会返回当前a[i]在one中的下标

one.push(a[i])

}

第二种  先排序 然后用for循环进行遍历   运用indexOf查看是否重复


6.把当前数组累加 / 累乘 递归   reduce(arr);   reduceRight()

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduceRight()  从数组的最后一项开始,向前遍历到第一项

var a=[1,2,3,4,5];

function getSum(x, y) {

    return x+ y;  //+号可以换成*  

}

console.log(a.reduce(getSum))    //  +号下  最后值为15   * 号下 最后值为120


7.数组排序  

sort() 在原数组上进行排序  可以从大到小  或者 从小到大

var a = [6,4,2,8,22];

//小->大

a.sort(function(x,y){

    return x - y;

})  

console.log(a);  // [2, 4, 6, 8, 22]

  //大->小

a.sort(function(x,y){

    return y - x;

})

console.log(a);   // [22, 8, 6, 4, 2]


reverse()   把当前数组颠倒顺序

a.reverse()  // [22,8,2,4,6];


8.数组添加   (会改变原数组)

push()   在数组的末尾添加  返回数组的新长度

unshift   在数组的头部添加    返回数组的新长度

 var a=[1,2,3,4];

console.log(a.push(125));      //   5

console.log(a.unshift(0));        //  6

console.log(a.pop());                 //125

console.log(a.shift());                 //  0

9.数组删除

pop()   删除数组末尾的数 并返回被删除的数

shift()    删除数组开头的数 并返回被删除的数

10.every()和some()

every() 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。类似&&

some() 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。类似 ||

var arr = [1, 2, 3, 4, 5, 6];

arr.every(x=>x>0);//return true;

arr.every(x=>x>5);//return false;

arr.some(x=>x>5);//return true;

你可能感兴趣的:(数组常用操作 后续会补充)