• 剑指前端(前端入门笔记系列)——数组(方法)


    数组——方法
     
    之前简单介绍了数组的基本语法,因为其操作局限性,所以掌握好数组的各方法是很重要的。
    ES5-
    push()——原数组改变
    参数:新增元素1,新增元素2。。。。。。
    功能:在数组的末尾添加一个或更多元素
    返回:新数组的长度
    var arr = ["AI-fisher",true];
    console.log("原数组:" , arr);
    result = arr.push(1,"2",NaN);
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值:" , result);
     
    unshift()——原数组改变
    参数:新增元素1,新增元素2。。。
    功能:在数组的开头添加一个或更多元素
    返回:新数组的长度
    var arr = ["AI-fisher",true];
    console.log("原数组:" , arr);
    result = arr.unshift(1,"2",NaN);
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值:" , result);
     
    pop()——原数组改变
    参数:
    功能:删除最后一个元素
    返回:被删除的元素
    var arr = ["AI-fisher",true,1,undefined,{},NaN,null,2];
    console.log("原数组:" , arr);
    result = arr.pop();
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值:", result);
     
    shift()——原数组改变
    参数:
    功能:删除第一个元素
    返回:被删除的元素
    var arr = ["AI-fisher",true,1,undefined,{},NaN,null,2];
    console.log("原数组:" , arr);
    result = arr.shift();
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值:" , result);
     
    splice()——原数组改变
    参数:所有参数可选
    功能:
    (1)不传参数:无操作
    var arr = ["AI-fisher",true,1,undefined,{},NaN,null];
    console.log("原数组:" , arr);
    result = arr.splice();
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值" , result);
    (2)传一个参数:表示从索引为这个参数的数据开始删除,直到数组结束
    var arr = ["AI-fisher",true,1,undefined,{},NaN,null];
    console.log("原数组:" , arr);
    result = arr.splice(2);
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值" , result);

    (3)传两个参数:以第一个参数为索引开始删,往后总共删除第二个参数个

    var arr = ["AI-fisher",true,1,undefined,{},NaN,null];
    console.log("原数组:" , arr);
    result = arr.splice(2,4);           
    console.log("操作后的原数组:" , arr);
    console.log("操作的返回值" , result);
    (4)三个及以上:在两个参数的操作基础上,将第三个参数或第三个及之后的所有参数新增到开始删除的位置处,相当于选取一些元素用指定元素来替换。特别地,当第二个参数为0时,相当于在开始删除的位置新增元素
    var arr = ["AI-fisher",true,1,undefined,{},NaN,null];
    console.log("原数组:" , arr);
    console.log("第一次操作的返回值:" , arr.splice(2,4,"abc"));     //替换
    console.log("第一次操作后的原数组:" , arr);
    console.log("第二次操作的返回值:" , arr.splice(2,0,"1111",2222,NaN));  //新增
    console.log("第二次操作后的原数组:" , arr);
    返回:删除的元素组成的数组
     
    sort()——原数组改变
    参数:所有参数可选
    功能:
    (1)不传参数:按字符的排序规则(逐位比较),从小到大排列
    var arr = [5,207,23,4,1970,6,9,7];
    console.log("原数组:" ,arr);
    result = arr.sort();
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组" , arr);
    (2)传一个参数:参数为回调函数function(a,b){函数体},a 代表每一次执行匿名函数时,找到的数组中的当前项;b 代表当前项的后一项;
      ①函数体为return a-b;时,表示升序
    var arr = [5,207,23,4,1970,6,9,7];
    console.log("原数组:" ,arr);
    result = arr.sort(function(a,b){
        return a-b;
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组" , arr);
      ②函数体为return b-a;时,表示降序
    var arr = [5,207,23,4,1970,6,9,7];
    console.log("原数组:" ,arr);
    result = arr.sort(function(a,b){
        return b-a;
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组" , arr);
    
    
    reverse()——原数组改变
    参数:
    功能:颠倒数组中元素的顺序。
    返回:新数组
    var arr = [1,3,4,undefined,null,[3,1,5]];
    console.log("原数组为:" , arr);
    console.log("返回值为:" , arr.reverse());
    console.log("操作后的原数组为:" , arr);
    ----------------------------------------------------------------------------------------------------------------------------
    concat()——原数组不变
    参数:concat(data1,data2,...)所有参数可选
    功能:
    (1)不传参数:返回一个新数组,其中的元素不变
    var arr1 = [3,4,5];
    console.log("原数组为:" , arr1);
    var arr2 = arr1.concat();
    console.log("操作后的原数组为:" , arr1);
    console.log("操作的返回值:" , arr2);
    console.log("arr1和arr2是否相等?" , arr1==arr2);
    (2)传一个或多个参数:当参数为非数组时,直接添加到数组中;当参数为数组时,直接将数组内的元素添加到数组中。
    var arr1 = [3,4,5];
    console.log("原数组为:" , arr1);
    var arr2 = arr1.concat("1",undefined,NaN,null,1,{a:"admin"},["a","b","c"]);
    console.log("操作后的原数组为:" , arr1);
    console.log("操作返回的新数组为:" , arr2);
    返回:操作后的新数组
     
    join()——原数组不变
    参数:join(str)所有参数可选
    功能:根据指定的分隔符将数组中的所有元素放入一个字符串
    (1)不传入参数:参数默认为“,”
    var arr = [4,5,6];
    console.log("原数组为:" , arr);
    str = arr.join();
    console.log("操作后的原数组:" ,arr);
    console.log("操作的返回值:" , str);
    console.log("操作的返回值的类型:" + typeof str);
    (2)传入一个参数:用这个参数作为分隔符
    var arr = [4,5,6];
    console.log("原数组为:" , arr);
    str = arr.join(1);
    console.log("第一次操作后的原数组:" ,arr);
    console.log("第一次操作的返回值:" , str);
    console.log("第二次操作的返回值:" , arr.join("-"));
    console.log("第三次操作的返回值:" , arr.join("~"));
    console.log("第一次操作的返回值的类型:" + typeof str);
    返回:被删除的元素
     
    toString()——原数组不变
    参数:
    功能:转换成字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。
    返回:字符串
    var arr = [1,2,3,4];
    console.log("原类型为:" , typeof arr);
    result = arr.toString();
    console.log("操作后的返回值为:" , result);
    console.log("操作后的原数组" , arr);
    console.log("操作后的类型为:" , typeof result);
     
    slice()——原数组不变
    参数:slice(startIndex, endIndex)(不传参无操作)
    功能:正数代表从前往后数的索引值(从0开始),负数代表从后往前数的索引值(从-1开始)
    (1)传入一个参数:将这个参数作为开始的索引值,从这一位开始向后截取剩下所有的元素
    var arr = [1,3,4,undefined,null,[3,1,5]];
    console.log("原数组为:" , arr);
    console.log("返回值为:" , arr.slice(1));
    console.log("返回值为:" , arr.slice(-1));
    console.log("操作后的原数组为:" , arr);
    (2)传入两个参数:和传一个参数的区别就是,指定了截取到的范围,是第二个索引值对应的元素的前一个。
    var arr = [1,3,4,undefined,null,[3,1,5]];
    console.log("原数组为:" , arr);
    console.log("返回值为:" , arr.slice(1,3));
    console.log("返回值为:" , arr.slice(-3,-1));
    console.log("操作后的原数组为:" , arr);
    返回:截取到的元素组成的数组
     
    valueOf()——原数组不变
    参数:
    功能:转换成字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。
    返回:原数组
    var arr = [1,2,3,4];
    var result = arr.valueOf();
    console.log("操作后的返回值为:" , result);
    console.log("操作后的原数组" , arr);
    console.log("返回值是否和原数组是同一个数组:" , result === arr);
     
    ES5
    indexof()——原数组不改变
    参数:至少传一个参数
    功能:根据指定的数据,从左向右,查询在数组中出现的位置。
    (1)传一个参数:查询该参数在数组中的位置
    let arr = ["h","e","l","l","o"];
    console.log("该元素的索引值为:" + arr.indexOf("l"));
    (2)传两个参数:从第二个参数的位置开始查询,若第二个参数为正,则从左往右,若第二个参数为负,则从右往左数
    let arr = ["h","e","l","l","o"];
    console.log(arr.indexOf("l",3));
    console.log(arr.indexOf("l",4));
    console.log(arr.indexOf("l",-1));
    console.log(arr.indexOf("l",-3));
    返回:元素存在则返回其索引值(如果查询到多个,则返回第一个检索到的元素的索引),不存在返回-1
     
    lastIndexof()——原数组不改变
    和indexOf类似,只不过是从右往左查询
     
    forEach()——原数组不改变
    参数:含有三个参数的回调函数(value,index,self),这三个值分别代表了值,索引,和数组自身
    功能:遍历数组的同时获取数组中每个数据和其索引
    返回:无返回值
    let arr = [1,undefined,null,NaN,"AI-fisher",true,[1,2,3],{name:"AI-fisher"}];
    console.log("原数组为:" , arr);
    let result = arr.forEach(function(value,index,self){
        console.log(`第一个参数:${value},第二个参数:${index},第三个参数:${self}`);
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组:" , arr);
     
    map()——原数组不改变
    参数:含有三个参数的回调函数(value,index,self)
    功能:
    (1)同forEach()
    let arr = [1,undefined,null,NaN,"AI-fisher",true,[1,2,3],{name:"AI-fisher"}];
    console.log("原数组为:" , arr);
    let result = arr.map(function(value,index,self){
        console.log(`第一个参数:${value},第二个参数:${index},第三个参数:${self}`);
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组:" , arr);
    (2)每次回调函数的返回值被map组成新数组返回
    let arr = [1,undefined,null,NaN,"AI-fisher",true,[1,2,3],{name:"AI-fisher"}];
    console.log("原数组为:" , arr);
    let result = arr.map(function(value,index,self){
        return `blog${value}`;
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组:" , arr);
    返回:将回调函数处理的数据,返回到一个新数组中
     
    filter()——原数组不改变
    参数:含有三个参数的回调函数(value,index,self)
    功能:
    (1)同forEach()
    let arr = [1,undefined,null,NaN,"AI-fisher",true,[1,2,3],{name:"AI-fisher"}];
    console.log("原数组为:" , arr);
    let result = arr.filter(function(value,index,self){
        console.log(`第一个参数:${value},第二个参数:${index},第三个参数:${self}`);
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组:" , arr);
    (2)当回调函数的返回值为true时,本次的数组值返回给filter,被filter组成新数组返回,,比如用长度来过滤(当然要注意其中的值要有长度这个属性,不然的话要么报错要么不会被选择,像undefined和null就会报错,而数值和布尔之类的并没有数值这个属性,所以肯定不会被选择)
    var arr = [12345,NaN,"AI-fisher",true,[1,2,3,4],{name:"AI-fisher"}];
    console.log("原数组为:" , arr);
    let result = arr.filter(function(value,index,self){
        return value.length > 3;
    });
    console.log("操作的返回值:" , result);
    console.log("操作后的原数组:" , arr);
    返回:将回调函数返回true时拿到的value放在新数组中查询符合条件的元素(过滤)
     
    本篇方法总结参考自博客:https://www.jianshu.com/p/7e160067a06c
  • 相关阅读:
    demo04-默认标签
    demo03-段落标签
    demo02-标题标签
    demo01-注释标签
    前端基础介绍
    xadmin的详细使用
    设置Linux环境变量中文显示乱码
    ES应用
    HTTP协议
    jboss
  • 原文地址:https://www.cnblogs.com/AI-fisher/p/11101855.html
Copyright © 2020-2023  润新知