zoukankan      html  css  js  c++  java
  • 2018-6-2_《JS操作数组(纯洁方法)》

    /*===========================================
    不影响原数组方法, “纯真”方法(8个)有:   
        1. slice()  浅拷贝数组元素
       2. join()  将数组中的所有元素转换为以某符号隔开的字符串
       3. toLocateString() 数组转字符串
       4. toString() 数组转字符串(不推荐使用)
       5. cancat()  合并两个或多个数组,返回一个新数组
       6. indexOf() 查找数组中是否存在某个元素,如果存在,返回下标
       7. lastIndexOf() 查找指定元素在数组中最后一个位置
       8. includes() ES7 查找是否包含某个元素,返回布尔
    ===========================================*/
    
    

      一. slice

    //语法
    //arr.slice(begin, end);
    
    let arr = [1,2,3];
    console.log(arr.slice(0,2)); [1,2], 拷贝了从第0个元素到第二个元素(开区间)
    console.log(arr);  //[1,2,3],原数组不变
    

      

    let arr = ['大米','禽蛋'];
    console.log(arr.slice(0,1)); //[ '大米']
    console.log(arr); //['大米','禽蛋'],原数组值不变
    arr[0] = '小龙虾';
    console.log(arr);  //['小龙虾','禽蛋'], arr[0]会改变原数组值
    
    //复杂数据会联动改变
    let arr = [{name:'小龙虾'}];
    let ret = arr.slice();
    console.log(ret,arr);  [{name:'小龙虾'}] [{name:'小龙虾'}]
    
    arr[0].name = '小龙吓变身';
    console.log(ret,arr);
    

      

    二. join

      

    // [1,2,3,4]会转字符串
    let arr = [1,2,3,4];
    let ret = arr.join('&');
    console.log(ret);  //'1&2&3&4'
    console.log(typeof ret);  //string
    

      

    //嵌套情况
    let arr = ['a', ['bb','cc'], 'd'];
    let ret = arr.join();
    console.log(ret); //"a,bb,cc,d", 与arr.join(',');一样
    
    let ret _1= arr.join('');
    console.log(ret_1);   //abb,ccd
    
    let ret _2= arr.join(','); //"a,bb,cc,d", 同arr.join();
    console.log(ret_2); 
    
    let ret _3= arr.join('&');
    console.log(ret_3); //a&bb, cc&d
    

      

    三.  toLocaleString

    let arr = [1,2,3,4];
    let ret = arr.toLocaleString();
    console.log(ret); //"1,2,3,4"
    console.log(typeof ret);  //string
    
    let arr_1 = [{name:'foo'},{name:'bar'},2,3,4];
    let ret_1 = arr_1.toLocaleString();
    console.log(ret_1); //"[object,object],[object,object],2,3,4"
    console.log(typeof ret_1);  //string
    

     

    四. toString

    五.concat 

    //合并两个或多个数组,返回一个新数组,原数组保持纯洁
    // 语法: (旧的).cancat(新的)
    let arr_1 = ['h','e','l',];
    let arr_2 = ['l','o'];
    let ret = arr_1.concat(arr_2);
    console.log(ret);  //['h','e','l','l','o']
    console.log(ret.join(''));  //hello
    

      

    //用concat插入元素
    let arr = [1,2];
    let ret = arr.concat('哈哈');
    console.log(ret);  //['1','2','哈哈']
    

      

    //合并嵌套数组,会浅拷贝
    let arr_1 = [1,2,3,['c','d'],4,5];
    let arr_2 = ['ok',9];
    let ret = arr_1.concat(arr_2);
    console.log(ret);  //[1, 2, 3, Array(2), 4, 5, "ok", 9]
    

      

    六. indexOf

    // 注意:是对数组中元素,而非针对一串字符串, 遵守“===”全等原则
    let arr = ['哈哈',1,3,5,7,9,'apple'];
    let ret = arr.indexOf('哈哈'),
        ret_1 = arr.indexOf('哈');
    console.log(ret); //0,表示元素位置;一般用>-1判断包含;
    console.log(ret_1);  //-1,表示没有, 一般用(indexOf('xx')<0)判断没有;  
    

      

    七. lastIndexOf

    // 语法 arr.lastIndexOf('str', fromIndex);
    // fromIndex如果指定了,比如4,就从下标4截止到下表0为搜索范围,是向左逆向;
    let arr = ['A','good',1,2,'good',4,'foo',5,'good',6,'bar',9];
    let ret_1 = arr.lastIndexOf('good',2);
    let ret_2 = arr.lastIndexOf('good',5);
    let ret_3 = arr.lastIndexOf('good');
    
    console.log(ret_1);  //1
    console.log(ret_2);  //4
    console.log(ret_3);  //8
    

      

    八. (略,见下篇)

  • 相关阅读:
    3.4.4 反射和泛型
    4.4.2 空合并操作符让比较不再痛苦
    NPOI导出EXCEL 打印设置分页及打印标题
    20、异常和状态管理
    14 字符字符串和文本处理
    15、枚举类型和标志位
    Oracle 数据库连接的一些坑
    17、委托
    《山鬼·九歌》——屈原
    每周一卦测感情,还是这么凶
  • 原文地址:https://www.cnblogs.com/beesky520/p/9125798.html
Copyright © 2011-2022 走看看