js常用的数组方法
1、join()
join(‘参数’)把数组的元素以传入的参数作为分割符,转换成字符串
let arr = [11, 22, 33, 44, 55];
let str = arr.join(',');
console.log(str);
2、push()和pop()
push()可以接收·任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度
pop()数组末尾移除最后一项,减少数组的length值,然后返回移除的项
let arr = ["张三", "李四", "王五"];
let count = arr.push("赵六");
console.log(arr); //['张三', '李四', '王五', '赵六']
console.log(count); //4
let item = arr.pop();
console.log(item); //赵六
3、shift()和unshift()
shift()删除原数组第一项,并返回删除元素的值,如果数组长度为空则返回undefined
unshift()将参数添加到原数组开头,并返回数组的长度
let arr = ["张三", "李四", "王五"];
let item = arr.shift();
console.log(arr); // ['李四', '王五']
console.log(item); //张三
let count = arr.unshift("赵六");
console.log(arr); //['赵六', '李四', '王五']
console.log(count); //3
4、reverse()
将数组的数据进行反转,并返回反转后的数组,会改变原数组
let arr = [11, 22, 33, 44, 55];
let arr1 = arr.reverse();
console.log(arr); // [55, 44, 33, 22, 11]
console.log(arr1); // [55, 44, 33, 22, 11]
5、sort()
对数组内的数据进行排序(默认升序),并且返回排过序的新数组,会改变原来的数组
let arr = [12, 2, 43, 5, 2, 5]
console.log(arr.sort()); //[12, 2, 2, 43, 5, 5]
// 注意点:打印的数组和原数组是有变化的,但是没有达到我们想要的结果,
// 是因为排序是针对字符的排序,先使用数组的toString()方法转为字符串,再逐个比较,不要和Number型的数据排序混淆
// 需要数值排序
//需要数值排序,sort(callback)需要传入一个回调函数,该函数应该有两个参数,比较这两个函数,然后返回一个用于说明这两个值的相对顺序的数字(a-b)
let arr = [12, 2, 43, 5, 2, 5];
console.log(arr.sort((a, b) => a - b)); // [2, 2, 5, 5, 12, 43]
6、slice()
截取指定位置的数组,并且返回截取的数组,不会改变原数组
// 注意 slice(startIndex,endIndex)可以有两个参数,
// startIndex为必选,表示从第几位开始的;endIndex为可选,表示第几位结束(不包含endIndex)
// 省略表示到最后一位,startIndex和endIndex都可以为负数,负数表示从最后一位开始算,如-1表示
let arr = ['张三', '李四', '王五', '赵六'];
console.log(arr.slice(1, 3)); // ['李四', '王五']
console.log(arr); //['张三', '李四', '王五', '赵六']原数组没有改变
7、spilce()
向数组中添加,或从数组删除,或替换数组的元素,然后返回被删除/替换的元素
//注意:splice(start,num,val1,val2);所有的参数全部可选,和slice相比,splice是会改变原数组的
// start表示开始位置,可以是负数,-1代表从最后一位开始,num代表要删除或者替换的长度,不能为负数
let arr = ['张三', '李四', '王五', '赵六'];
console.log(arr.splice(2, 1)); //['王五']
console.log(arr); //['张三', '李四', '赵六']
let arr = ['张三', '李四', '王五', '赵六'];
console.log(arr.splice(2, 1, "老六")); //['王五']
console.log(arr); //['张三', '李四', '老六', '赵六']
8、toString()
将数组转换为字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。不会改变原数组
let arr = [11, 22, 33, 44, 55, 66];
console.log(arr.toString()); //'11,22,33,44,55,66'
// 注意:没有参数!!!
9、indexOf()
根据指定的数据,从左往右,查询数组中出现的位置,如果不存在指定的数据,就返回-1,找到了指定的数据返回该数据的索引
let arr = ['张三', '李四', '王五', '赵六'];
console.log(arr.indexOf("李四")); //1
console.log(arr.indexOf("李四", 2)); //-1
10、forEach()
ES5新增方法,用来遍历数组,没有返回值
// forEach(callback);callback默认有三个参数,分别是value(遍历到数组的数据),index(对应的索引),self(数组自身)
let arr = ["张三","李四","王五","赵六"]
let a = arr.forEach((item,index,self)=>{
console.log(value+ "--"+index+"--"+(arr===self))
//张三--0--true
//李四--1--true
//王五--2--true
//赵六--3--true
console.log(a) //undefined --forEach没有返回值
//该方法是遍历方法,不会修改原数组
})
11 、map()
同forEach的功能
map的回调函数会将执行结果返回,最后map将所有回调函数的返回值组成新数组返回
// 注意: map(callback);callback默认有三个参数,分别是value,index,self。跟上面的forEach()的参数一样
let arr = ["张三","李四","王五","赵六"]
let arr1 = arr.map(item=>{
return '你好:'+item
})
console.log(arr1) //['你好:张三','你好:李四','你好:王五','你好:赵六']
12、filter()
同forEach功能
filter的回调函数需要返回布尔值,当为true时,将本次数组的数据返回给filter。最后fliter将所有回调函数的返回值组成新数组返回(可以理解为过滤)
// 注意 filter(callback);callback默认有三个参数,分别为value,index,self
let arr =[1,2,3,4,5,6]
let arr1 = arr.filter((value,index,self)=>{
console.log(item) //1,2,3,4,5,6
console.log(index) //0,1,2,3,4,5
console.log(self) //[1,2,3,4,5,6]
return item >3
})
console.log(arr1) //[4,5,6]
13、find()
数组的循环,查找符合条件的值,并打断循环返回找到的值
let arr = ["张三","李四","王五","赵六"]
let str = arr.find(item=>item=='李四');
console.log(str); //李四
14、findIndex()
数组的循环。查找符合条件的索引,并打断循环返回找到的索引值
let arr = ["张三","李四","王五","赵六"]
let index = arr.findIndex(item=>item=='李四')
console.log(index) //1
15、every()
判断数组中每一项是否都满足条件,只有所有项都满足条件。才会返回true
// 注意 every()接受一个回调函数作为参数,这个回调函数需要有返回值,every(callback);callback默认有三个参数value,index,self
let arr =[1,2,3,4,5,6]
let bool = arr.every(item=>item>0)
console.log(bool) // true
let bool1 = arr.every(item=>item>3)
console.log(bool1) // false
16、some()
判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true,否则就会返回false
// 注意 some()接收一个回调函数作为参数,这个回调函数需要有返回值。some(callback),callback默认有三个参数value,index,self
let arr =[1,2,3,4,5,6]
let bool = arr.some(item=>item>3)
console.log(bool) // true
let bool1 = arr.some(item=>item>6)
console.log(bool1) // false
17、reduce()
数组的第一项开始,逐个便利到最后,迭代数组的所有项,然后构建一个最终返回的值
// 注意 参数reduce()接收一个或两个参数,第一个事回调函数,表示在数组的每一项上调用的函数;第二个参数(可选的)作为归并的初始值,被回调函数第一次执行时的第一个参数接收。reduce(callback,initial) callback默认有四个参数,分别时prev,now,index,self。callback返回的任何值都会作为下一次执行的第一个参数。如果initial参数被省略,那么第一次迭代发生在数组的第二项,因此callback的第一个参数是数组的第一项,第二个参数就是数组的第二项
let arr = [10,20,30,40,50]
let sum = arr.reduce((prev,now)=>prev+now)
console.log(sum) //150 0+10+20+30+40+50
let sum1 = arr.reduce((prev,now)=>prev+now,110)
console.log(sum1) //260 110+10+20+30+40+50