js数组与字符串类型相同方法的比较
数组和字符串有很多相似的对方,比如数组和字符串都有以下方法:
- concat
- indexOf
- lastIndexOf
- slice
- 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数组与字符串类型相同方法的比较的更多相关文章
- js数组和字符串去重复几种方法
		js数组去重复几种方法 第一种:也是最笨的吧. Array.prototype.unique1 = function () { var r = new Array(); label:for(var i ... 
- JS数组去重的9种方法(包括去重NaN和复杂数组类型)
		其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 转载请表明出处 测试代码 let ... 
- js中的数组和字符串的一些方法
		数组的一些方法: 1.join()和split()方法 <script type="text/javascript">var x;var a=new Array();a ... 
- JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别
		String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String 对象方法 方法 描述 ... 
- js数组与字符串的相互转换方法
		一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ... 
- JS —— 数组与字符串方法
		数组 1. 基本方法 1)Array.prototype.unshift(item1,item2,item3...) 描述: 在数组的前面添加元素,一次可以传入多个参数. 注意:元素会根据当前传入的 ... 
- (转)js数组与字符串的相互转换方法
		一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ... 
- js数组与字符串的相互转换方法 数组常用的方法
		1 数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ... 
- JS数组与对象的遍历方法大全
		本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() ... 
随机推荐
- 20180706模拟赛T2——染色
			文件名: seq 题目类型: 传统题 时间限制: 1秒 内存限制: 128MB 编译优化: 无 题目描述 小A正在帮助小M刷她家的墙壁 小M家的墙可以分为\(n\)块,每段需要被刷成黑色或者白色.你可 ... 
- 架构篇 | LAMP 架构应用案例 - 部署 PHPMyAdmin 系统(二)
			作者 | JackTian 微信公众号 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)备注:来自博客园 1.什么是 phpMyadmin 系统? ... 
- Sublime Text3 设置
			主题:Spacegrey.sublime-theme 配色方案:Mariana 自动保存 参考:https://www.cnblogs.com/mzzz/p/6178341.html "sa ... 
- c04--数组
			0.展示PTA总分 1.本章学习内容总结 1.1学习内容总结 数组查找: 1.遍历法查找:从头遍历数组找对应数据. 2.二分法查找:适用于按顺序排列的整形数组. 插入数据: 先找到该数据,对数组进行移 ... 
- K8s容器资源限制
			在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod. 如: Pod运行至少需要2G内存,1核CPU 2. 资源限额: ... 
- Ubuntu 16.04安装ANSYS 2019 R1
			参考:<ANSYS15.0 for Linux下载及安装教程> 参考链接: https://wenku.baidu.com/view/92bdf21b312b3169a451a4b5.ht ... 
- 1-7docke的网络模式
			1.Bridge模式 bridge 模式是 docker 的默认⽹络模式,不写 –net 参数,就是 bridge 模式.比如使⽤ docker run - p 时 工作模式从网上找了一个,如下 例子 ... 
- 【Java】15分钟快速体验阿里Java诊断工具Arthas
			[墙裂推荐]15分钟快速体验阿里Java诊断工具Arthas : https://alibaba.github.io/arthas/arthas-tutorials?language=cn&i ... 
- SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
			这条警告表明一个SQL Server代理设置没有配置,可能阻止某些作业运行. 你可以设置作业在CPU“空闲”时运行(在第一篇提到过).然而,在这个系统中空闲的定义还没有被 设置. 在SSMS配置此选项 ... 
- CentOS环境设置Hbase自启动
			1.在/etc/init.d/目录创建hbase文件 #!/bin/bash # chkconfig: #export JAVA_HOME=/usr/local/jdk1.8.0_191 HBASE_ ... 
