首页 > 解决方案 > 如何查找数组内的差异值并记录差异的索引

问题描述

祝大家新年快乐!

但是对不起我想问一个问题,我有一个这样的数组

[ 'even', 'even', 'odd', 'even', 'even' ]

我希望输出会说 3,因为数组内部的差异值是“奇数”并且它位于第三个索引中(索引从 1 开始)

而且,当问题变成

[ 'odd', 'even', 'odd', 'odd', 'odd' ]

输出将得到 2,因为数组内的差异值是“偶数”并且它位于第二个索引中

有没有人可以帮助我?


我尝试过使用 javaScript 方法映射、for 循环和其他,...但我不知道如何获取数组的差异值并从中打印索引

谢谢

标签: javascriptarrayssortingindexing

解决方案


您可以findIndex在主数组上使用并通过比较其索引和 lastIndex 来检查元素是否唯一

const findIndexOfUnique =  (arr) => arr.findIndex(x => arr.indexOf(x) === arr.lastIndexOf(x)) + 1

console.log(findIndexOfUnique([ 'even', 'even', 'odd', 'even', 'even' ]))

标题:

indexOf方法从头到尾寻找一个元素。并且lastIndexOf从头到尾做同样的事情。因此,如果元素是唯一的,那么两者的结果将相同,否则它们将不同。

findIndex()将函数作为参数并返回满足条件的第一个元素的索引。所以实际上我们是这么说的。查找与条件匹配的元素的第一个索引arr.indexOf(x) === arr.lastIndexOf(x)。然后我们添加1以获得所需的输出


推荐阅读