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查看是否重复 reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 reduceRight() 从数组的最后一项开始,向前遍历到第一项 var a=[1,2,3,4,5]; function getSum(x, y) { return x+ y; //+号可以换成* } console.log(a.reduce(getSum)) // +号下 最后值为15 * 号下 最后值为120 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]; 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 pop() 删除数组末尾的数 并返回被删除的数 shift() 删除数组开头的数 并返回被删除的数 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;6.把当前数组累加 / 累乘 递归 reduce(arr); reduceRight()
7.数组排序
8.数组添加 (会改变原数组)
9.数组删除
10.every()和some()