javascript - 使用 javascript 查找第一个重复出现的字符
问题描述
输入:数组=[2,5,1,2,3,5,1,2,4]
输出返回 2
输入:数组=[2,1,1,2,3,5,1,2,4]
输出返回 1
输入数组=[2,3,4,5]
输出返回未定义
我在repl.it上运行我的代码,它总是返回 undefined。
有什么改进的方法可以让 undefined 消失吗?
另外如何在第三个输入中返回未定义?
我在我的 JS 中尝试的内容:
function FirstRecurringCharacter(arr){
for (i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) !== i) {
console.log(arr[i]);
break;
}
}
};
FirstRecurringCharacter([2,5,1,2,3,5,1,2,4])//should return 2
FirstRecurringCharacter([2,1,1,2,3,5,1,2,4])//should return 1
FirstRecurringCharacter([2,3,4,5])//should rerturn undefined
解决方案
您可以使用 aSet
并使用Array#find
.
function find(array) {
var s = new Set;
return array.find(v => s.has(v) || !s.add(v));
}
console.log(find([2, 5, 1, 2, 3, 5, 1, 2, 4])); // 2
console.log(find([2, 1, 1, 2, 3, 5, 1, 2, 4])); // 1
console.log(find([2, 3, 4, 5])); // undefined
推荐阅读
- css - CSS - 水平嵌套列表乱序换行
- freepascal - Pascal Debian Jessie TryGetData 不工作
- android - 运行不同的线程不允许显示活动
- c++ - 通过模板函数从其地址调用函数
- tfs - TFS:链接提交到工作项停止工作(整个集合)
- python - 在不更改负值的情况下将用于数据框中空列的“-”转换为 0?
- laravel - FirstOrCreate 制作副本
- java - 尝试读取从过程返回的 oracle Clob 时连接关闭
- amazon-cloudformation - Cloudfront + S3 + HTTPS 模板也提供不需要的 HTTP
- python - API 在没有太多调用后卡住了