将第二个字符串字符与数组中的第一个字符串进行比较

时间:2015-07-09 21:29:38

标签: javascript arrays string

我试图在Free Code Camp中找出一个挑战,其中包含以下内容:

  

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

我理解如果第二个字符串有一个字符或第一个字符串的第二个字符串包含在完全相同的序列中(例如"你好"," hel&#34) ;而不是"你好"," 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'])

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

5 个答案:

答案 0 :(得分:0)

感谢@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初学者)遇到这个任务并找到了这个解决方案,如果你不知道这里使用的方法,这里有一些值得注意的资源。

答案 1 :(得分:0)

你也可以这样做:

/**
 * 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

答案 2 :(得分:0)

我的突变

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

答案 3 :(得分:0)

使用map可以完成同样的事情:

Laravel\Socialite\SocialiteServiceProvider::class,

答案 4 :(得分:0)

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