检查数组中的字符串

时间:2015-07-20 07:28:36

标签: javascript arrays

我试图查看数组第一个元素中的字符串是否包含数组第二个元素中字符串的所有字母。

例如

['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的所有字母。

4 个答案:

答案 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函数。

<强>步骤

  1. Sort两个数组
  2. 投射到字符串
  3. 检查strings2是否包含string1
  4. 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"]);