数组的方法总结

数组的方法总结:

在我们学习js的过程中,有一些常用的数组的方法,本篇文件针对数组的方法进行了总结:

1)数组添加删除方法:
方法名说明返回值
push(参数1…)修改原数组,末尾添加一个或多个元素并返回新的长度
pop()删除 数组的最后一个元素,把数组长度减 1 无参数返回它删除的元素的值
unshift(参数1…)向数组的开头添加一个或更多元素并返回新的长度
shift()把数组的第一个元素从其中删除,把数组长度减 1 无参数并返回第一个元素的值

语法:

// ① push()  在数组的末尾  添加一个或者多个数组元素  push推
    var arr = [1, 2, 3]
    arr.push(4)
    console.log(arr) //[1,2,3,4]
//目的: 
    //(1)push是可以给数组追加新的元素
    // (2) push()参数直接写数组元素就可以了
    //(3)push完之后,返回结果是  新的数组的长度
    //(4)原数组也发生了变化
// ② unshift()  在数组的开头  添加一个或者多个数组元素  
    var arr = [1, 2, 3]
    arr.unshift('red')
    console.log(arr) //['red',1,2,3,4]
//目的: 
    //(1)unshift是可以给数组前面追加新的元素
    // (2) unshift()参数直接写数组元素就可以了
    //(3)unshift完之后,返回结果是  新的数组的长度
    //(4)原数组也发生了变化
//  ③ pop()  删除数组的最后一个元素,把数组长度-1   无参数  返回它删除的元素的值
    var arr1 = [1, 2, 3, 4, 5]
    var b = arr1.pop()
    console.log(arr1); //返回 [1, 2, 3, 4]
//目的:
    //(1)删除了数组的最后一个元素
    //(2)也就是把数组的长度-1
    //(3)返回一个新的数组,原数组发生变化
// ④ shift()  把数组的第一个元素从其中删除,把数组长度减 1 无参数
    var arr2 = [1, 2, 3, 4, 5]
    var c = arr2.shift()
    console.log(arr2); //返回 [2, 3, 4, 5]

案例:

工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除

var arr = [1500, 1200, 2000, 2100, 1800];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    if (arr[i] < 2000) {
        newArr.push(arr[i]);
    }
}
console.log(newArr);
2)数组排序方法
方法名说明是否修改原数组
reverse()颠倒数组中元素的顺序,无参数该方法会改变原来的数组
sort()对数组的元素进行排序该方法会改变原来的数组

语法:

// ① reverse()  颠倒数组中元素的顺序,无参数  该方法会改变原来的数组
    var arr = ['red', 'andy'];
    console.log(arr.reverse()); // 返回翻转之后的数组 ['andy','red']
    console.log(arr); // 原先数组也被修改 ['andy','red']
// ② sort() 对数组的元素进行排序  该方法会改变原来的数组
    //参数
    var arr1 = [99, 1, 2, 3, 4, 5]
    var a = arr1.sort()
    //默认的按升序排列
    console.log(a) //[1, 2, 3, 4, 5, 99]

    //从小到大
    var arr2 = [99, 1, 2, 3, 4, 5]
    arr2.sort(
        function(a, b) {
            return a - b 
        }
    )
    console.log(arr2) //[1, 2, 3, 4, 5, 99]

    //从大到小
    arr2.sort(
        function(a, b) {
            return b - a 
        }
    )
    console.log(arr2) //[99, 5, 4, 3, 2, 1]
3)数组操作方法
方法名说明返回值
concat()连接两个或多个数组返回一个新的数组
slice()数组截取slice(begin, end)返回被截取项目的新数组
splice()数组删除splice(第几个开始,要删除个数)返回被删除项目的新数组 注意,这个会影响原数组

语法:

// ① concat()  连接两个或多个数组
    var arr1 = [1, 2];
    var arr2 = ['pink', 'red'];
    var arr3 = ['andy', 18];
    //返回连接之后的新数组
    console.log(arr1.concat(arr2, arr3)); // [1, 2, 'pink', 'red', 'andy', 18]
// ② slice()  数组截取slice(begin, end)  返回被截取项目的新数组
        var arr = ['宝马', '奥迪', '红旗', '奔驰']
        var a = arr.slice(0, 2) //参数可写可不写,不写就返回完整的数组
        console.log(a) //['宝马', '奥迪']
        console.log(arr) //['宝马', '奥迪', '红旗', '奔驰']  不会改变原数组
//总结:
    //(1)参数可写可不写,不写就返回完整的数组
    //(2)返回被截取项目的新数组
    //(3)不会改变原数组
// ③ splice() 数组删除splice(第几个开始,要删除个数)   返回被删除项目的新数组  注意,这个会影响原数组
    var arr1 = ['宝马', '奥迪', '红旗', '奔驰']
    var a = arr1.splice(0, 2) //参数可写可不写,不写就返回完整的数组
    console.log(a) //返回的是被删除的内容['宝马', '奥迪']
    console.log(arr1) //['红旗', '奔驰']  改变原数组
//总结:
    //(1)参数可写可不写,不写就返回一个空数组
    //(2)返回的是被删除的内容
    //(3)会改变原数组

    var arr2 = ['宝马', '奥迪', '红旗', '奔驰']
    var a = arr2.splice(0, 2, '五菱') //从0开始,删除前两个,把‘五菱放在删除的位置’
    console.log(a)//['宝马', '奥迪']
    console.log(arr2)//['五菱', '红旗', '奔驰']
//总结:
    //(1)当有三个值时,第一个值是表示从哪个开始
    //(2)第二个值,是删除前几个
    //(3)第三个值,是把这个值放在删除的地方
4) 数组位置方法
方法名说明返回值
indexOf()如果没找到返回-1返回下标 从前往后找
lastIndexOf()如果没找到返回-1返回下标 从后往前找
5) 数组的所有元素连接到一个字符串中
方法名说明返回值
join(‘分隔符’)方法用于把数组中的所有元素转换为一个字符串。返回一个字符串

语法:

// join('分隔符')  方法用于把数组中的所有元素转换为一个字符串。  返回一个字符串
    var arr = ['red', 'green', 'blue', 'pink'];
    console.log(arr.join()); // 跟toString() 一样, 强制转换为字符串//red,green,blue,pink
    
    //分隔符默认是,逗号
    console.log(arr.join('-')); //red-green-blue-pink
    console.log(arr.join('/')); //red/green/blue/pink
6)ES5新增数组方法
方法名说明返回值
forEach()参数为回调函数,会遍历数组所有的项,回调函数接受三个参数,分别为value, index, self;
map()根据指定的条件处理数组元素,并且返回处理之后的数组元素组成的新数组处理之后的新数组
filter()创建一个新数组,其包含通过所提供函数实现的测试的所有元素**,主要用于筛选数组**符合条件的新数组
some()判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true布尔值:true | false
every()every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。布尔值:true | false
reduce()迭代数组的所有项,累加器,数组中的每个值(从左到右)合并,最终计算为一个值
//forEach()方法
//参数:forEach(callback);callback默认有三个参数,分别为value(遍历到的数组的数据),index(对应的索引),self(数组自身)。
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.forEach(function(value,index,self){
     console.log(value + "--" + index + "--" + (arr === self));
})
// 打印结果为:
// Tom--0--true
// Jack--1--true
// Lucy--2--true
// Lily--3--true
// May--4--true
console.log(a);     //undefined---forEach没有返回值
//该方法为遍历方法,不会修改原数组
//map()方法
//参数:map(callback);callback默认有三个参数,分别为value,index,self。跟上面的forEach()的参数一样
//功能1:同forEach
 var arr = ["Tom","Jack","Lucy","Lily","May"];
 var a = arr.map(function(value,index,self){
     console.log(value + "--" + index + "--" + (arr === self))
 })
 // 打印结果为:
 // Tom--0--true
 // Jack--1--true
 // Lucy--2--true
 // Lily--3--true
 // May--4--true

 //功能2:每次回调函数的返回值被map组成新数组返回
 var arr = ["Tom","Jack","Lucy","Lily","May"];
 var a = arr.map(function(value,index,self){
     return "hi:"+value;
 })
 console.log(a);     //["hi:Tom", "hi:Jack", "hi:Lucy", "hi:Lily", "hi:May"]
 console.log(arr);   //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变

//filter()方法
//参数:filter(callback);callback默认有三个参数,分别为value,index,self。

//功能1:同forEach
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.filter(function(value,index,self){
    console.log(value + "--" + index + "--" + (arr === self))
})
// 打印结果为:
// Tom--0--true
// Jack--1--true
// Lucy--2--true
// Lily--3--true
// May--4--true

//功能2:当回调函数的返回值为true时,本次的数组值返回给filter,被filter组成新数组返回
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.filter(function(value,index,self){
    return value.length > 3;
})
console.log(a);         //["Jack", "Lucy", "Lily"]
console.log(arr);       //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变

//every()方法
//参数:every()接收一个回调函数作为参数,这个回调函数需要有返回值,every(callback);callback默认有三个参数,分别为value,index,self。


//功能1:当回调函数的返回值为true时,类似于forEach的功能,遍历所有;如果为false,那么停止执行,后面的数据不再遍历,停在第一个返回false的位置。
//demo1:
 var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
 var a = arr.every(function(value,index,self){
     console.log(value + "--" + index + "--" + (arr == self))
 })
 // 打印结果为:
 // Tom--0--true
 //因为回调函数中没有return true,默认返回undefined,等同于返回false
 
 //demo2:
 var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
 var a = arr.every(function(value,index,self){
     console.log(value + "--" + index + "--" + (arr == self))
     return value.length < 4;
 })
 // 打印结果为:
 // Tom--0--true
 // abc--1--true
 // Jack--2--true
 //因为当遍历到Jack时,回调函数到return返回false,此时Jack已经遍历,但是后面数据就不再被遍历了
 
 //demo3:
 var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
 var a = arr.every(function(value,index,self){
     console.log(value + "--" + index + "--" + (arr == self))
     return true;
 })
 // 打印结果为:
 // Tom--0--true
 // abc--1--true
 // Jack--2--true
 // Lucy--3--true
 // Lily--4--true
 // May--5--true
 //因为每个回调函数的返回值都是true,那么会遍历数组所有数据,等同于forEach功能
 
 //功能2:当每个回调函数的返回值都为true时,every的返回值为true,只要有一个回调函数的返回值为false,every的返回值都为false
 //demo1:
 var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
 var a = arr.every(function(value,index,self){
     return value.length > 3;
 })
 console.log(a);           //false
 
 //demo2:
 var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
 var a = arr.every(function(value,index,self){
     return value.length > 2;
 })
 console.log(a);           //true
//some()方法
//参数:some()接收一个回调函数作为参数,这个回调函数需要有返回值,some(callback);callback默认有三个参数,分别为value,index,self。

//功能1:因为要判断数组中的每一项,只要有一个回调函数返回true,some都会返回true,所以与every正好相反,当遇到一个回调函数的返回值为true时,可以确定结果,那么停止执行,后面都数据不再遍历,停在第一个返回true的位置;当回调函数的返回值为false时,需要继续向后执行,到最后才能确定结果,所以会遍历所有数据,实现类似于forEach的功能,遍历所有

 //demo1:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.some(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
        return value.length > 3;
    })
    // 打印结果为:
    // Tom--0--true
    // abc--1--true
    // Jack--2--true

//reduce()方法
// 参数:
    // callback:
    // previousValue 必选--上一次调用回调返回的值,或者是提供的初始值(initialValue)
    // currentValue 必选--数组中当前被处理的数组项
    // index 可选--当前数组项在数组中的索引值
    // array 可选--原数组
    // initialValue: 可选--初始值

//实行方法:回调函数第一次执行时,preValue 和 curValue 可以是一个值,如果 initialValue 在调用 reduce() 时被提供,那么第一个 preValue 等于 initialValue ,并且curValue 等于数组中的第一个值;如果initialValue 未被提供,那么preValue 等于数组中的第一个值.
    let arr = [0,1,2,3,4]
    let arr1 = arr.reduce((preValue, curValue) => 
        preValue + curValue
    )
    console.log(arr1)    // 10
    let arr2 = arr.reduce((preValue,curValue)=>preValue + curValue,5)
    console.log(arr2)    // 15

部分内容参考:https://www.jb51.net/article/235572.htm

7)ES6新增数组方法
名称类型简介
of()静态方法用于将一组值,转换为数组。注意跟Array的区别
from()静态方法将两类对象转为真正的数组(arguments,元素集合)
find()实例方法用于找出第一个符合条件的数组成员
findIndex()实例方法返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
fill()实例方法使用给定值,填充一个数组。可选开始索引和结束索引
copyWithin(targetIndex,[start],[end])实例方法在当前数组内部,将指定位置的成员复制到其他位置,然后返回当前数组
includes(data,[index])实例方法返回一个布尔值,表示某个数组是否包含给定的值,可选开始索引
//of()方法
//Array和Array of()的区别:
//--体现在传一个参数的时候
//--Array传一个参数时,数组中的元素为empty;
//--当Array.of()传一个参数时,数组中的元素是传入的参数的值;

//Array
    let arr0 = new Array(4); 
    console.log(arr0);// [empty,empty,empty,empty]
//Array.of()
    let arr2 = Array.of(4)
    console.log(arr2); //[4]
//from()方法
//将伪数组变成数组,就是只要有length的就可以转成数组。
    let str = '12345'
    console.log(Array.from(str))    // ["1", "2", "3", "4", "5"]
    let obj = {0:'a',1:'b',length:2}
    console.log(Array.from(obj))   // ["a", "b"]
    let aa= {0:'a',1:'b'}
    console.log(Array.from(aa))   // []
//find()方法
//用于找出第一个符合条件的数组成员,如果没有找到返回undefined
    arr1=[1, 2, 3, 4, 5]
    let num1 = arr1.find(function(item) {
        return item > 1;
    });
    console.log(num1); //2
//findIndex()方法
//用于找出第一个符合条件的数组成员的位置,如果没有找到返回-1
    arr1=[1, 7, 9, 4, 5]
    let num1 = arr1.findIndex(function(item){
        console.log(item)
        return item>10
    });
    console.log(num1);
    let num1 = arr1.findIndex(item => item > 9);
    console.log(num1); //-1
    let num2 = arr1.findIndex(item => item > 3);
    console.log(num2); //2
//fill()方法
//给数组指定的索引,以指定值进行填充
//参数:
	//---第一个参数是填充的值
    //---第二个参数是起始索引 默认值是0
    //---第三个参数是结束的索引(不包含) 默认值是数组length

    arr1=[1, 2, 3, 4, 5]
    console.log(arr1); //[1, 2, 3, 4, 5]
    arr1.fill(6);
    console.log(arr1); //[6, 6, 6, 6, 6]
    arr1.fill(7, 2);
    console.log(arr1); //[6, 6, 7, 7, 7]
    arr1.fill(8, 1, 3);
    console.log(arr1); //[6, 8, 8, 7, 7]
//copyWith()方法
//在当前数组内部,将指定位置的成员复制到其他位置,然后返回当前数组
// ---第二个参数为起始索引
// ---第三个参数为结束索引**(不包含)**,将对应的数组元素赋值给第一个参数设置的开头的索引,依次取替换原索引上的值

    arr1=[1, 2, 3, 4, 5]
    let arr4 = arr1.copyWithin(0, 1, 4);
    console.log(arr4); //[2, 3, 4, 4, 5]
    let arr5 = arr4.copyWithin(1, 3, 4);
    console.log(arr5); //[2, 4, 4, 4, 5]
    let arr6 = arr5.copyWithin(0, 2, 4);
    console.log(arr6); //[4, 4, 4, 4, 5]
//includes()方法
//判断数组是否包含指定值---是全等判断
//相当于Object.is()
//参数:
    //---第一个值是包含的指定值
    //---第二个值是指定值的索引

arr5=[2, 3, 4, 7, 5]
let flag = arr5.includes(2);
console.log(flag);//true
let flag1 = arr5.includes(3,1);
console.log(flag1);//true

哪些数组方法会改变原数组

  • unshift();
  • push();
  • shift();
  • pop();
  • sort();
  • reverse();
  • splice();
  • copyWithin()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值