前言
在 ECMAScript 2018 中,Array.prototype.findIndex 方法被添加到了数组的原型中。这个新的方法可以帮助我们更加简单高效地查找数组中的元素,同时避免了过多的遍历。本文将详细介绍 Array.prototype.findIndex 方法的基本用法和一些应用技巧,帮助读者更好地理解这个新的方法。
什么是 Array.prototype.findIndex 方法?
Array.prototype.findIndex 方法是一个原型方法,用于查找数组中符合条件的元素并返回该元素在数组中的索引。它的基本语法如下:
array.findIndex(callback(element[, index[, array]])[, thisArg])
其中,callback 是回调函数,其参数包括当前迭代的元素 element、当前元素的索引 index 和数组本身 array。findIndex 方法还可以通过 thisArg 参数指定回调函数内部 this 的值(不指定则默认为全局对象 window)。
查找成功时会返回数组中第一个符合条件的元素的索引,否则返回 -1。
如何使用 Array.prototype.findIndex 方法?
下面是一个简单的示例,了解如何使用 Array.prototype.findIndex 方法:
const arr = [1, 2, 3, 4, 5]; const index = arr.findIndex((e) => e > 3); console.log(index); // 3
在这个例子中,我们定义了一个数组 arr,然后使用 findIndex 方法来查找第一个大于 3 的元素。由于数组中的第一个符合条件的元素是 4,因此 findIndex 方法返回了 3。
应用技巧
1. 查找数组中的重复元素
我们可以使用 findIndex 方法来查找数组中的重复元素。具体方法是,遍历整个数组,对于每一个元素来说,查找后面是否有重复元素,如果有,则返回当前元素的索引值。
const arr = [1, 2, 3, 2, 4, 5, 1]; for (let i = 0; i < arr.length; i++) { const index = arr.slice(i + 1).findIndex((e) => e === arr[i]); if (index !== -1) { console.log(`重复元素:${arr[i]},索引为:${i}`); } }
在这个例子中,我们定义了一个数组 arr,并使用 for 循环遍历整个数组。在每一次循环中,使用 slice 方法获取当前元素后面的子数组,然后使用 findIndex 方法查找是否有相同的元素。如果有,说明当前元素是一个重复元素,我们就打印出它的值和索引值。
2. 查找字符串中的子串
我们可以使用 findIndex 方法来查找字符串中的子串。具体方法是,将字符串转换成字符数组,然后查找是否有符合条件的元素。
const str = 'hello world'; const index = str.split('').findIndex((e, i, arr) => arr.slice(i, i + 5).join('') === 'world'); console.log(index); // 6
在这个例子中,我们定义了一个字符串 str,并使用 split 方法将它转换成字符数组。然后,在 findIndex 方法中,将每五个字符作为一个子数组,并使用 join 方法将其转换成字符串。最后,根据是否等于目标字符串是否相等,判断是否找到了符合条件的子串。如果查找成功,就返回该子串的起始位置。在这个例子中,它的起始位置是 6。
总结
Array.prototype.findIndex 方法是 ECMAScript 2018 中一个很实用的新方法,它可以帮助我们在数组和字符串中快速查找符合条件的元素。本文介绍了基本用法和一些应用技巧,希望能对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d4b2cdb5eee0b525c8542f