• 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"]
    
  • 相关阅读:
    数组常用遍历方法总结
    文本控制行数,超出省略号显示
    数据结构入门
    数论函数补充 公式推导
    几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi
    COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution
    数论函数
    数论入门
    USACO1.4 1.5 搜索剪枝与数字 洛谷OJ P1214 P1215 P1217 P1218
    USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)
  • 原文地址:https://www.cnblogs.com/jing-tian/p/12067632.html
Copyright © 2020-2023  润新知