使用 indexOf() 比较数组中的字符
Using indexOf() to compare characters in an Array
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;
^ 这是正确的。
谢谢大家!
相关文章:
- 从指定范围创建字符数组
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 正在转义javascript数组中的html字符
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- 将组成单词的字符添加到数组的开头
- 用javascript将字符串连接到数组中
- 用Objective-C将JSON解析成C风格的字符数组
- 打破ng中的字符数组,重复并设置每个字符自己的输入标记
- 计算JavaScript中句子(数组)中字符(数组)的出现次数
- 将句子字符串拆分为单词数组,然后将单词数组拆分为单词数组中的字符数组
- 使用JavaScript将字符串转换为字符数组
- 从占转义字符的字符数组创建字符串
- 如何从字符数组中创建3个唯一值
- 在Chrome下,Base-64字符数组异常的无效长度
- 将正则表达式与字符数组匹配
- 通过字符数组转义字符串
- 替换字符串中的字符数组
- 如何将Javascript字符串转换为八位字节/字符数组
- 在字符数组中循环
- 使用敲除扩展程序不允许使用字符数组