首页 > 解决方案 > 无法理解 javascript 中的 indexOf 以便在字符串中找到唯一值?

问题描述

我有下面的代码来检查字符串是否唯一。

function unique(str) {
  let values = [];
  for (let letter of str) {
    if (values.indexOf(letter) !== -1) {
      return false;
    }
    values.push(letter);
  }
  return true;
}

console.log(unique("abbds"));

我不正确理解内部的 if 条件。谁能让我理解这个概念?

标签: javascript

解决方案


这是您的代码正在执行的操作。你有字符串abbds和数组values。在第一次迭代中

  • 你检查a里面的第一个字符values

values.indexOf("a")这导致-1因为a值中不存在。

  • 在这种情况下,values.indexOf("a")因为a不在里面,所以values你把它推到里面values

  • 如果values具有字符,在这种情况下,indexOf将返回该项目第一次出现的索引。

因此values.indexOf(letter) !== -1将是‘真实的。

indexOf()方法返回可以在数组中找到给定元素的第一个索引,或者-1如果它不存在。

来自 MDN:Array.prototype.indexOf()


推荐阅读