indexOf()和lastIndexOf()方法操作
两个方法都接收两个参数:要查找的项和要查找的起始位置的索引。
indexOf()是从数组的开始向后查找
lastIndexOf()是从数组的末尾向前查找
第一个参数:
要在数组中定位的元素。
第二个参数:
用于开始搜索的索引。如果索引大于或等于数组的长度,则返回-1,这意味着不会搜索该数组。如果提供的索引值为负数,则将其作为数组末尾的偏移量。注意:如果提供的索引为负数,则仍会从前到后搜索数组。如果计算的索引小于0,则将搜索整个数组。默认值:0(搜索整个数组)。
两个方法都返回要查找的的项在数组中的索引
ps:indexOf()
使用严格相等(与===
三重等于运算符使用的方法相同)与Array的元素进行比较。
先介绍indexOf(),这个用的比较多一些
注意:两个方法都对大小写敏感。
注意:如果要检索的字符串值没有出现,则都返回 -1。
String类型的使用:
var b = "yellow";
b.indexOf("y",1) //0
//正常的检索从字符串的
b.indexOf("y",0) //0
b.indexOf("o",10) //-1
如果找到就返回数组的索引,没找到就返回-1,看起来没什么样子,接下来看看
var c = "2016";
c.indexOf(6) //3
c.indexOf("6") //3
这里indexOf 会做简单的类型转换,把数字转换成字符串 '2' 然后再执行。
接下来再看看number类型
var d = 2018;
d.indexOf(8) //VM150:1 Uncaught TypeError: d.indexOf is not a function
之前字符串会做隐式转换,但是namber类型不会做隐式转换
接下来就是数组了 使用最多的类型
var a = ["a","b","c","d","a","b","c","d"]
//["a", "b", "c", "d", "a", "b", "c", "d"]
a.indexOf("a",3) //4 找到的是第二个"a"
a.indexOf("a",5) //-1 找不到返回-1
var a = ["abcd","bacd","cabd","dabc"]
a.indexOf("a",2) //-1 此方法不会再每一个元素的基础上再执行indexOf()方法
lastIndexOf()是从末尾向前开始查找
返回值是从0开始的下标,没有检索到也是返回-1,
一般来说,indexOf是用来查找字符串的。
es6新增的includes()方法
includes()
方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
let str = ["apple", "plum", "peach" ,"banana" ,"pitaya" ,"fruits"];
console.log(str.includes("banana")); // true;
console.log(str.includes("ananas")) // false
接受两个参数,第一个参数是需要查找的元素值,第二个参数代表是从该索引开始搜索,如果为负数,那么按照 array.length + index 处的索引开始搜索,默认为0;
返回值
boolean类型( true 或 false )
示例
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
如果第二个长度大于本身数值的长度
var arr = ['a', 'b', 'c'];
arr.includes('c', 3); //false
arr.includes('c', 100); // false
如果计算出的索引小于0时
// 数组长度是3
// array.length是 -100
// index 是 3 + (-100) = -97
var arr = ['a', 'b', 'c'];
arr.includes('a', -100); // true
arr.includes('b', -100); // true
arr.includes('c', -100); // true
大概就这么多,indexOf()方法的返回值是 第一次出现的索引位置 和 -1。而includes返回的是true和false,相比于indexOf()方法来说会简便一些
PS:注意includes方法只会找到字符串里面有没有这个字母,如果这个字母前面后者后面还有字母,那么也同样会被找到,看例子。
let str = "apple plum peach2 banana2 pitayafruits";
console.log(str.includes("banana")); // true;
console.log(str.includes("ananas")) // false