js常用的数组方法

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
  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值