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

Return true if the string in the first element of the array contains all of the letters of the string in the second element of the array?

本文关键字:字符串 元素 数组 返回 true 第二个 第一个 包含 如果      更新时间:2023-09-26

这是我目前为止的代码;我所做的就是循环遍历每一个字母。我被困在如何测试字符串是否有相同的字符。

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。

我使用了上面的答案,但修改了它以删除大小写,否则我将在Hello和Hello

上获得false
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']);

简洁、现代、易于阅读:

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"]));

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

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']);

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

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"]);

干净点怎么样?只是对上面的代码做了一点修改。

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;
}

这个问题的代码更少

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

以上代码并非在所有情况下都有效因为如果数组中的第一个单词比第二个短那么就需要第二个for循环

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

你需要2个for循环

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