2015-07-09 80 views
0

我試圖找出在自由編碼陣營這一個挑戰,規定如下:比較第一串第二串字符數組

返回true,如果在的第一個元素的字符串數組包含數組第二個元素中字符串的所有字母。

我知道如何做到這一點,如果第二個字符串中有一個字符,或者如果第一個字符串包含了在完全相同的序列中的第二個字符串(如「你好」,「HEL」,而不是「你好」, 「2009東海生日賀」)。但我還不能確定解決這一挑戰的正確方法。

這裏是我的代碼...

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

} 

其中有字符的不同序列的任何組合的計算結果爲假。

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

什麼是完成此任務的正確方法?

+0

['charAt()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt) –

+0

您想使用'.indexOf'代替'搜索' – Bergi

+0

@Bergi是的,我認爲是。我使用for循環來創建類似這樣的內容..... string1.indexOf(string2.charAt([i]))。你怎麼看? –

回答

1

感謝@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初學者)遇到這一任務,並認爲這一解決方案,這裏有一些顯着的資源來通讀,如果你不知道這裏所用的方法不..

+0

@Bergi您是否有意刪除**。toString()**?如果是這樣,那麼Dev Tools會將此返回爲false。函數中傳遞的參數是數組元素如果是這樣,那麼我的壞 - >'突變(''hello','hel']);' –

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

同樣可以做到用地圖:

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

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

+1

雖然這段代碼可能會回答這個問題,提供關於如何解決問題和/或爲什麼解決問題的附加背景可以提高答案的長期價值。 –

相關問題