首页 > 解决方案 > 如何遍历数组并在之后显示重复元素?

问题描述

我有一个表,其中第一列是一个元素数组,例如

[apple, banana, cherry, grapes, apple]

对于相邻列,如果元素重复,它应该显示重复发生在哪一行

ID 水果
1 苹果 5
2 香蕉
3 樱桃
4 葡萄
5 苹果 1
6 苹果

如何正确实施?

我尝试了这样的解决方案,但它显示不是找到的第一个值

let elems = ['apple', 'banana', 'cherry', 'grapes', 'apple', 'apple'];


    elems.forEach(function (value, index, arr){

        let first_index = arr.indexOf(value);
        let last_index = arr.lastIndexOf(value);

         if(first_index !== last_index){

         console.log('Dublicate value: ' + value + ', ' + 'Index: ' + arr.indexOf(value) + ' and ' + arr.lastIndexOf(value) );

         }

    });

标签: javascript

解决方案


您可以先使用filter查找重复项,然后循环查找每次出现的索引。

const arr = ['apple', 'banana', 'cherry', 'grapes', 'apple'];
const duplicates = arr.filter((x, i) => arr.indexOf(x) !== i);
for (const x of duplicates) {
  console.log(`Duplicate value ${x} at indexes ${
    [...Array(arr.length).keys()].filter(i => arr[i] === x)}`);
}


推荐阅读