使用 indexOf() 比较数组中的字符

Using indexOf() to compare characters in an Array

本文关键字:字符 数组 比较 indexOf 使用      更新时间:2023-09-26
  function mutation(arr) {
  var tester = arr[1].split('');
  for (var i = 0; i < tester.length; i ++) {
    if (!arr[0].indexOf(tester[i])) return false;
  }
  return true;
  }
  mutation(["hello", "hey"]);

在这里,如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,我应该返回 true。

我认为这段代码没有任何问题,但它只通过了 90% 的测试,我不知道为什么。而且我看不到那里的模式——我应该满足什么确切的条件才能通过测试。

indexOf(( 方法返回调用字符串中的索引 指定值第一次出现的对象,从 在fromIndex搜索。如果未找到该值,则返回 -1。

如果未找到值,String.prototype.indexOf()返回 -1,这就是您的语句不起作用的原因。

更改为:

if (arr[0].indexOf(tester[i]) < 0) return false;

这不起作用,因为您将第一个位置(0 位置(归类为不可接受。

您的条件仅适用于不大于 0 的值,而0也应该有效。

因此,请更改它,使其仅对小于 0 的值返回 false

更改此行:

if (!arr[0].indexOf(tester[i])) return false;

自:

if (arr[0].indexOf(tester[i]) < 0) return false;

事情非常明显——大写/小写((问题。这现在有效:

function mutation(arr) {
 arr[0] = arr[0].toLowerCase();
 arr[1] = arr[1].toLowerCase();
 var tester = arr[1].split('');
 for (var i = 0; i < tester.length; i ++) {
   if (arr[0].indexOf(tester[i]) == -1) return false;
 }
  return true;
}
mutation(["hello", "hey"]);

当然,我没有注意到一个明显的 0 位置问题:

if (arr[0].indexOf(tester[i]) == -1) return false;

^ 这是正确的。

谢谢大家!