zoukankan      html  css  js  c++  java
  • js数组与字符串类型相同方法的比较

    数组和字符串有很多相似的对方,比如数组和字符串都有以下方法:

    1. concat
    2. indexOf
    3. lastIndexOf
    4. slice
    5. includes

    鉴于toString及valueOf方法基本类型都有,这里就不做过多介绍了

    1、数组中indexOf和较数组中includes的比较

    • 看函数的返回值:indexOf返回的是数值型的而includes返回的是布尔型的
    • 都可以支持第二参数,而且的第二个参数都支持负数形式
    • 数组中的indexOf不能判断数组中是否有NaN而includes可以

    1.1 indexOf不能判断NaN

    var arr = [NaN];
    console.log(arr.indexOf(NaN))   //-1
    console.log(arr.includes(NaN))  //true
    

    1.2 判断稀疏数组结果不同

    var arr = [,,];
    console.log(arr.indexOf(undefined))//-1
    console.log(arr.includes(undefined))//true
    

    这是因为 indexOf 认为稀疏数组,省略掉的值是不存在的,但 includes 认为是undefined

    2、字符串的indexOf和数组中的indexOf的比较

    功能:搜索字符串or数组中的元素,并返回它所在的位置。
    语法:array.indexOf(item,start)

    • 这两个方法都可以接收两个参数
    • 这两个方法在没有查找的指定的字符都返回-1
    • 字符串中的indexOf中的第二个参数不支持负数而数组的indexOf支持
    • 字符串的indexOf在传入参数不是字符串的情况下默认会转换为字符串而数组的indexOf不会进行数据类的转换

    2.1 字符串的参数不支持负数

    let str = "abcd";
    let arr = ["a","b","c","d"];
    console.log(str.indexOf("a", -1)); //0
    console.log(arr.indexOf("a", -1)); //-1
    

    2.2 字符串的参数会自动转换

    let str = "1";
    let arr = ["1"];
    console.log(str.indexOf(1)); //0
    console.log(arr.indexOf(1)); //-1
    

    3、字符串的includes和数组中的includes的比较

    功能:用来判断一个字符串or数组是否包含一个指定的值,如果是返回 true,否则false
    语法:arr.includes(searchElement, fromIndex)

    • 这两个方法都可以接收两个参数
    • 这两个方法在没有查找的指定的字符都返回false
    • 字符串中的includes中的第二个参数不支持负数而数组的includes支持
    • 字符串的includes在传入参数不是字符串的情况下默认会转换为字符串而数组的includes不会进行数据类的转换

    3.1 字符串的参数不支持负数

    let str = "abcd";
    let arr = ["a","b","c","d"];
    console.log(str.includes("a", -1)); //true
    console.log(arr.includes("a", -1)); //false
    

    3.2 字符串的参数会自动转换

    let str = "1";
    let arr = ["1"];
    console.log(str.includes(1)); //true
    console.log(arr.includes(1)); //false
    

    4、字符串的slice和数组中的slice的比较

    功能:提取字符串or数组的某个部分,不会改变现有的值,而仅仅会返回被连接字符串or数组的一个副本。
    语法:arr.slice(start,end)

    • 在不传入任何参数的情况下都是把原来的值拷贝一份
    • 字符串的slice的第二个参数是不支持负数的而数组的可以
    • 都可以接收两个参数
    let arr1 = [1, 2, 3, 4, 5, 6];
    console.log(arr1.slice(1, 4)) //[2, 3, 4];
    
    let str1 = "hello root";
    console.log(str1.slice(1,4)); //ell
    

    5、字符串的concat和数组中的concat的比较

    功能:方法用于连接两个或多个字符串or数组;不会改变现有的值,而仅仅会返回被连接字符串or数组的一个副本。
    语法:arr.concat(arrayX,arrayX,......,arrayX)

    • 这两个方法都没有限定参数,而且参数可以是任何数据类型的值
    let str1 = "hello";
    let str2 = " world!";
    console.log(str1.concat(str2));  //"hello world!"
    
    let arr1 = ["hello"];
    let arr2 = ["root"];
    console.log(arr1.concat(arr2)); //["hello", "root"]
    
  • 相关阅读:
    技巧和诀窍;在VS 2005里优化ASP.NET 2.0Web项目的Build性能(转)
    去噪:用于验证码图片识别的类续(C#代码)
    快速申请QQ号码的技巧(图文介绍)
    vs2005中调试js
    "Take the Internet Back“挂机程序(读信息挣美元)
    javascript的编写、调试
    硬盘速度和Visual Studio性能
    Java Swing的DragAndDrop机制
    Rails 的 SNS 准备
    学习,编译ffmpeg tutorial
  • 原文地址:https://www.cnblogs.com/jing-tian/p/12067632.html
Copyright © 2011-2022 走看看