我试图查看数组第一个元素中的字符串是否包含数组第二个元素中字符串的所有字母。
例如
['hello', 'hey'] = false;
['Army', 'Mary'] = true;
这是我的代码
function mutation(arr) {
a = arr[0].toLowerCase().split("");
b = arr[1].toLowerCase().split("");
for(i = 0; i < a.length; i++){
if(b.indexOf(a[i]) != -1){
console.log('true');
} else {
console.log('false');
}
}
}
mutation(['Army', 'Mary']);
更新
在返回任何内容之前,我需要查看元素1是否包含元素2的所有字母。
答案 0 :(得分:2)
这样做,我确信有更好和最佳的解决方案,
1)将返回结果存储在布尔值中,如var result = true;
。
2)检查两个字符串是否相等/相同,不需要循环,返回result
,这是真的。
3)遍历每个字符并查看目标元素是否包含它们,如果找到不匹配集,result
为false,break
并返回result
。
function mutation(arr) {
a = arr[0].toLowerCase().split("");
b = arr[1].toLowerCase().split("");
var result = true;
if(a === b)
return result;
for(i = 0; i < a.length; i++){
if(b.indexOf(a[i]) === -1){
result = false;
break;
}
}
return result;
}
mutation(['Army', 'Mary']);
更新在(a === b) return true;
跳过循环时添加了条件。
答案 1 :(得分:2)
不需要循环,您可以利用array
函数。
<强>步骤强>
Sort
两个数组
function mutation(arr) {
var a = arr[0].toLowerCase().split(''),
b = arr[1].toLowerCase().split('');
// For exact equality
return a.sort().toString() === b.sort().toString();
// return b.sort().toString().indexOf(a.sort().toString()) > -1;
}
document.write('Army and Mary: ' + mutation(['Army', 'Mary'])); // true
document.write('<br />a and b: ' + mutation(['a', 'b'])); // false
document.write('<br />ab and abc: ' + mutation(['ab', 'abc'])); // false
答案 2 :(得分:1)
如果第一个元素中不存在某个字符,则需要循环遍历第二个元素字母并返回false
,如果存在,则返回continue
。
然后检查计数器是否等于你的字符串长度,然后它包含所有给定的字母并返回true:
function mutation(arr) {
a = arr[1].toLowerCase().split("");
b = arr[0].toLowerCase().split("");
if (a === b) return true;
for (i = 0; i < a.length; i++) {
if (b.indexOf(a[i]) === -1) {
return false;
}
}
if (i === a.length) {
return true; // all the letteers of element one exists in the second element
}
}
if (mutation(['Army', 'Mary'])) {
alert("Element one contains all letters of second element !");
} else {
alert("Sorry!");
}
注意:强>
确保循环使用第二个元素而不是第一个元素字符,请参阅a = arr[1].toLowerCase().split("");
。
答案 3 :(得分:0)
//mutation function work ignoring case and order of character in strings
function mutation(arr) {
var first = arr[0].toLowerCase();
var second = arr[1].toLowerCase();
for(var i = 0; i < second.length; i++){
if(first.indexOf(second[i]) == -1){
return false;
}
}
return true;
}
//this returns true
mutation(["hello", "ol"]);