如果数组的第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回true?

时间:2015-07-20 16:17:33

标签: javascript

这是我的代码到目前为止;我所做的就是遍历每个字母。 我一直坚持如何测试字符串是否具有相同的字符。

function mutation(arr) {
  for (var i=0;i<arr.length;i++){
      for(var j =0;j<arr[i].length;j++){
      }
  }
}

mutation(['hello', 'hey']);

字符不必在同一个索引处,例如,['Alien','line']应该返回true。

7 个答案:

答案 0 :(得分:1)

您只需循环一次,并将第二个数组与第一个数组进行比较。

function mutation(arr) {
    var arr1 = arr[0].split('');
    var arr2 = arr[1].split('');
    var count = 0;
    for (var i =0; i < arr2.length; i++) {
        if(arr1.indexOf(arr2[i]) > -1 ) {
            count++;
        }
    }

    if (count == arr2.length) {
        console.log('all in');
    }
}

mutation(['alien', 'line']);

或者您可以使用filter

function mutation(arr) {
    var arr1 = arr[0].split('');
    var arr2 = arr[1].split('');

    if (arr2.filter(function(element, index) { return arr1.indexOf(element); }).length === arr2.length) {
        console.log('all in');
    }
}

mutation(['alien', 'line']);

答案 1 :(得分:1)

我使用了上面的答案,但修改了它以删除案例,否则我在Hello和hello上得到了错误

function mutation(arr) {

//first split the arr into the two inputs and convert all to lower case

var firstArray = arr[0].toLowerCase().split("");
var secondArray = arr[1].toLowerCase().split("");

//now using the code provided by the above comment which is really clean

var count = 0;
for (var i =0; i < secondArray.length; i++) {
    if(firstArray.indexOf(secondArray[i]) > -1 ) {
        count++;
    }
}

if (count == secondArray.length) {
    return true
}

//changed the code provided above to handle the true/false criteria of the excercise

else {return false; }
}

mutation(['hello', 'hey']);

答案 2 :(得分:1)

接受答案中的计数器是不必要的。

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

答案 3 :(得分:1)

清洁,现代且易于阅读:

&#13;
&#13;
function mutation(arr) {
  const firstEl = arr[0].toLocaleLowerCase();
  const secondEl = arr[1].toLocaleLowerCase().split('');
  return secondEl.every(el => firstEl.includes(el));
}

console.log('mutation(["hello", "hey"]): ', mutation(["hello", "hey"]));
console.log('mutation(["Alien", "line"]): ', mutation(["Alien", "line"]));
&#13;
&#13;
&#13;     

答案 4 :(得分:0)

干净的东西怎么样?只需对上面的代码进行一点修改。

function mutation(arr) {

var first = arr[0].toLowerCase().split('');
var second = arr[1].toLowerCase().split('');
var count = 0;
// Check every character and if the index is found add one
for (var s in second){
    if (first.indexOf(second[s]) > -1) {
        count+= 0;
    } else
        count++;
    }
if (count === 0)
    return true;
else
    return false;
}

答案 5 :(得分:0)

这个问题的代码更少

<?php
    preg_match_all('/src="([^"]*)"/i', get_the_content(), $images);
    echo $images[1][count($images[1])-1];
?>

答案 6 :(得分:-2)

上述代码在所有情况下都不起作用 因为如果数组中的第一个单词比第二个短,则需要第二个循环

    for (var i=0; i<arr1.length; i++){
if (arr2.indexOf(arr1[i])==-1){
return false;   

你需要2个循环

function mutation(arr) {
 var arr1=arr[0].toLowerCase().split("");
 var arr2=arr[1].toLowerCase().split("");
 if (arr1.length<arr2.length ){
 for (var i=0; i<arr1.length; i++){
if (arr2.indexOf(arr1[i])==-1){
  return false;
}
}
}
 else if (arr1.length>=arr2.length ){

 for (var j=0; j<arr2.length; j++){
if (arr1.indexOf(arr2[j])==-1){
  return false; 
}
}
}


  return true;
}
//mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"]);
mutation([ "qrstu", "zyxwvutsrqponmlkjihgfedcba"]);
enter code here