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

  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"]

js数组与字符串类型相同方法的比较的更多相关文章

  1. js数组和字符串去重复几种方法

    js数组去重复几种方法 第一种:也是最笨的吧. Array.prototype.unique1 = function () { var r = new Array(); label:for(var i ...

  2. JS数组去重的9种方法(包括去重NaN和复杂数组类型)

    其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 转载请表明出处 测试代码 let ...

  3. js中的数组和字符串的一些方法

    数组的一些方法: 1.join()和split()方法 <script type="text/javascript">var x;var a=new Array();a ...

  4. JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别

     String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String 对象方法 方法 描述 ...

  5. js数组与字符串的相互转换方法

    一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ...

  6. JS —— 数组与字符串方法

    数组 1. 基本方法  1)Array.prototype.unshift(item1,item2,item3...) 描述: 在数组的前面添加元素,一次可以传入多个参数. 注意:元素会根据当前传入的 ...

  7. (转)js数组与字符串的相互转换方法

    一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ...

  8. js数组与字符串的相互转换方法 数组常用的方法

    1 数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ...

  9. JS数组与对象的遍历方法大全

    本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() ...

随机推荐

  1. 装ubuntu的坑

    装ubuntu安装盘的U盘,在BOOT中会出现两种载入方式,切记不要用UEFI方式打开,否则安装ubuntu会在最后卡在GRUB的安装上面,然后失败.

  2. matlab-fsolve函数求解多元非线性方程

    记录一下代码,方便下次套用模板 options=optimset('MaxFunEvals',1e4,'MaxIter',1e4); [x,fval,exitflag] = fsolve(@(x) m ...

  3. windows10下Docker开启nginx服务访问页面没有反应

    网址不要输入localhost,而是输入docker quickstart terminal登陆成功后给你的ip地址.

  4. piral 基于typescript 的微前端开发框架

    piral有一个微前端开发框架,功能强大,文档比较全,扩展能力也比较好 包含以下特性: 特性 高度模块化 多框架兼容 支持资源文件的拆分 全局状态管理 独立开发和部署 CLI工具 与同类框架的比较 参 ...

  5. ERP(Enterprise Resource Planning,企业资源计划)

    企业资源计划或称企业资源规划简称ERP(Enterprise Resource Planning),由美国著名管理咨询公司Gartner Group Inc.于1990年提出来的,最初被定义为应用软件 ...

  6. <虚树+树型DP> SDOI2011消耗战

    <虚树+树型DP> SDOI2011消耗战 #include <iostream> #include <cstdio> #include <cstring&g ...

  7. About Her

    突然想给黑寡妇写点儿东西......(也许很多都不是我写的,但是能表达我的心意) 1. 众人进量子领域前最后一句话是她笑着说"一分钟后见." 而最终没有回来的,只有她自己一个 2. ...

  8. GitHub 干货 | 各大数据竞赛 Top 解决方案开源汇总

    AI 科技评论编者按:现在,越来越多的企业.高校以及学术组织机构通过举办各种类型的数据竞赛来「物色」数据科学领域的优秀人才,并借此激励他们为某一数据领域或应用场景找到具有突破性意义的方案,也为之后的数 ...

  9. Java集合详解8:Java集合类细节精讲,细节决定成败

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  10. MySQL重要知识点

    可能是全网最好的MySQL重要知识点 |  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后不会有这个 ...