javascript - 如何遍历数组并在之后显示重复元素?
问题描述
我有一个表,其中第一列是一个元素数组,例如
[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) );
}
});
解决方案
您可以先使用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)}`);
}
推荐阅读
- jquery - 如何通过单击元素取消功能的触发?
- python - 求 3D 函数的梯度向量
- c++ - T 是否必须是完整的类型才能在 `std::declval 中使用
`? - html - MailChimp HTML 电子邮件模板扩展了表格行的部分背景
- asynchronous - 使用“Async”时,为什么使用“Await”
- automation - 无论如何要在变量面板中隐藏凭据值吗?
- java - 如何在 Java API 中运行 GPR 文件并运行模型 GAMS
- python - 我可以优化这个 Word Mover 的距离查找功能吗?
- python - 为大型密集方形矩阵的列表切片分配值(Python)
- javascript - 将鼠标悬停在按钮上后圆圈跟随光标