比较数组中的第二个字符串和第一个字符串

Compare the 2nd strings characters with the 1st string in an array

本文关键字:字符串 第一个 第二个 数组 比较      更新时间:2023-09-26

我正试图找出自由代码营的挑战,其中陈述如下:

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

我理解如何做到这一点,如果第二个字符串有一个单一的字符,或者如果第一个字符串有第二个字符串包含在完全相同的序列(例如。"hello","hel",而不是"hello","olleh")。但是我还没有想出解决这个挑战的正确方法。

这是我的代码…

function mutation(arr) {
 var myArray = arr.splice(1).toString().toLowerCase();
 var splicedArray = arr.toString().toLowerCase();
  if (splicedArray.search(myArray) != -1) {
    return true;
  } else {
    return false;
  }
}

任何具有不同字符序列的组合计算结果为false。

 // e.g this is false
 mutation(['Alien', 'line'])

完成这项任务的正确方法是什么?

多亏了@Bergi,我找到了答案。他也很好地允许我张贴自己的答案。

function mutation(arr) {
   var string2 = arr.splice(1).toString().toLowerCase();
   var string1 = arr.toString().toLowerCase();
  for(var i = 0; i < string2.length; i++) {
    if (string1.indexOf(string2.charAt(i)) == -1) {
      return false;
    }
  }
  return true;
}

如果有人像我一样(JS初学者)遇到这个任务并找到了这个解决方案,如果你不知道这里使用的方法,这里有一些值得注意的资源可以阅读。

  • .splice ()
  • indexOf ()
  • .slice ()
  • .slice()和.splice()方法的区别

你也可以这样做:

/**
 * Match function that operates on a data array with two elements, where the 
 * first element is the query and the second element is the searchable data.
 *
 * Returns true if the query string contains all of the letters of the searchable
 * data string.
 * 
 * @param  {Array} data - contains query and searchable string data
 * 
 * @return {Boolean} if a match occured
 */
var match = function (data) {
    // Convert strings to arrays.
    var query = Array.prototype.slice.call(data[0]);
    var searchableData = Array.prototype.slice.call(data[1]);
    // Every query string character should occur in the searchable data.
    return query.every(function (search) {
        // Only some of the searchable data characters should occur in the query data.
        return searchableData.some(function (target) {
            return search === target;
        });
    });
};
match([ 'abc', 'xyzadefbhijc' ]); // returns true
match([ 'abq', 'xyzadefbhijc' ]); // returns false

我的突变

function mutation(arr) {
  var string2 = arr[1].toLowerCase();
  var string1 = arr[0].toLowerCase();
  for(var i = 0; i < string2.length; i++) {
    if (string1.indexOf(string2.charAt(i)) == -1) {
      return false;
    }
  }
  return true;
}

同样可以使用map:

function mutation(arr) {
  var one = arr[0].toLowerCase();
  var two = arr[1].toLowerCase().split('');
  var match = true;
  two.map(function(val){
    if(one.indexOf(val) === -1){
      match = false;
    }
  });
  return match;
}

function mutation(arr) {
  var src=arr[0].toLowerCase();
  var dist=arr[1].toLowerCase();
  for(var i=0;i<dist.length;i++){
    if(src.indexOf(dist[i])<0) return false;
  }
  return true;
}
console.log(mutation(["voonoo", "no"]))