有人可以向我解释一下这行代码到底在做什么吗?
function findUniq(array) {
return array.find((item) => array.indexOf(item) === array.lastIndexOf(item))
}
Run Code Online (Sandbox Code Playgroud)
我想知道这条线到底在做什么:
return array.find((item) => array.indexOf(item) === array.lastIndexOf(item))
Run Code Online (Sandbox Code Playgroud)
我认为这里发生的是,对于数组中的每个项目,它都会将该项目的第一个索引与项目的最后一个索引进行比较。它返回彼此相等的项目。
我不明白它如何返回唯一的数组。
如果我要写这个函数,它会是这样的:
return array.find((item) => array.indexOf(item) != array.lastIndexOf(item))
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为它返回的是通用号码。
谢谢
该Array.prototype.find()方法采用谓词函数(根据输入参数返回 true 或 false 的函数),然后返回谓词为 true 的元素。
在您的情况下,考虑到以下情况:
var array1 = [1,2,1,3,5,2,3];
var array2 = [1,2,1,3,5,5,3];
function findUnique(array){
return array.find(
// The code below runs for every element of the array.
// - for each element, it takes the element and checks if first position, is the same as last position in the array
(item) => array.indexOf(item) === array.lastIndexOf(item) //
);
}
console.log("For array 1, unique item is: ",findUnique(array1));
console.log("For array 2, unique item is: ",findUnique(array2));Run Code Online (Sandbox Code Playgroud)
Array.prototype.indexOf(yourArrayElement) 返回第一次出现的位置yourArrayElement
哦,另一方面,Array.prototype.lastIndexOf(yourArrayElement)返回最后一次出现的位置yourArrayElement
如果yourArrayElement数组中只存在一次,则第一个和最后一个位置将相同,并将Array.prototype.find()返回该元素。
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |