javascript - 可以在字符串上使用 for in 循环吗?

标签 javascript for-loop indexof for-in-loop lastindexof

只是想知道在字符串上使用 for in 循环是否可以接受。不确定是否会出现奇怪的结果或不良做法,但我的解决方案至少在这个例子中有效。

编码练习题。此外,如果有人有办法改进我的解决方案,我愿意听取建议。

function firstNonRepeatingLetter(str) {
  const lowerStr = str.toLowerCase();

  for (let char in lowerStr) {
    if (lowerStr.lastIndexOf(lowerStr[char]) === parseInt(char) && 
    lowerStr.indexOf(lowerStr[char]) === parseInt(char)) {
      return str[char];
    }
  }

  return "";
}

编写一个名为 first_non_repeating_letter 的函数,它接受一个 string 输入,并返回字符串中任何地方都不重复的第一个字符。

例子:

firstNonRepeatingLetter('a') => 'a'
firstNonRepeatingLetter('stress') => 't'
firstNonRepeatingLetter('sTreSS') => 'T'

最佳答案

当您的代码运行时,我建议采用索引来迭代字符串的字符。

但是您的方法通过使用 indexOflastIndexOf 对字符串进行了多次迭代。这可以通过使用存储最后找到的字符索引的循环来更改。

在另一个循环中,将相同字符的实际索引与存储的索引进行比较,如果相等则返回。

function firstNonRepeatingLetter(str) {
    var lowerStr = str.toLowerCase(),
        hash = {},
        i;

    for (i = 0; i < lowerStr.length; i++)
        hash[lowerStr[i]] = i;

    for (i = 0; i < lowerStr.length; i++)
        if (hash[lowerStr[i]] === i)
            return str[i];

    return "";
}

console.log(firstNonRepeatingLetter('a'));      // a
console.log(firstNonRepeatingLetter('stress')); // t
console.log(firstNonRepeatingLetter('sTreSS')); // T

关于javascript - 可以在字符串上使用 for in 循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124442/

相关文章:

JavaScript 函数 : var func = someFunction() and var func = someFunction?

javascript - ReactJS - 刷新时 componentDidMount 中的 Prop 不立即可用

javascript - 从 Sharepoint 站点重定向到移动站点对 Android 用户不起作用

batch-file - 批量SUBSTRING一个文件名

arrays - 从 json 响应中获取前两个索引的数据

java - 如何输出数组中元素的索引

javascript - 如何在移动设备或小窗口上隐藏 HTML 中的元素?

java - Java 中的基本井字棋

scala - 如何跳出 Scala 中的循环?

javascript - 如何在 JSON 中查找对象在数组中的位置