2016-10-01 9 views
0

javascriptにはとても新しいので、私には負担してください... 同じ配列(arr [0])の別の要素に対して文字列を含む配列(arr [1])の1つの要素をチェックする必要があります要素arr [1]に含まれる文字がarr [0]に含まれている場合これらの文字は、大文字、小文字の順序でもかまいません。また、arr [0] = "hheyyy"、arr [1] = "hey"は同じです。これは私が持っているものです(これはうまくいきますが)誰かがこれをやるためのより良い/もっと簡単な方法を持っていれば私は好奇心でした。 -前もって感謝します。これが第二のバックスラッシュで文字列(それは正規表現構文と競合することはできません)、角括弧でそれを取り囲み、および使用中のすべての文字をエスケープ配列の要素が同じ配列内の別の要素と一致するかどうかをチェックする方法は?

function mutationReg(arr) { 
    return !arr[1].replace(new RegExp('['+arr[0].replace(/(.)/g,'\\\\$1')+']', "gi"), '').length; 
} 

function mutation(arr) { 
    //splits the array into two separate arrays of individual letters 
     var newArr0 = arr.join('').toLowerCase().split('').slice(0,arr[0].length); 
     var newArr1 = arr.join('').toLowerCase().split('').slice(arr[0].length); 
     var boolArr = []; 
    //checks each letter of arr1 to see if it is included in any letter of arr0 
     for(var i = 0; i < newArr1.length; i++) 
     boolArr.push(newArr0.includes(newArr1[i])); 
    //results are pushed into an array of boolean values 
     if (boolArr.indexOf(false) !==-1) 
     return false; //if any of those values are false return false 
     else return true; 
    } 

    mutation(["hello", "hey"]); //returns false 
+0

[この回答](http://stackoverflow.com/a/18692301/4256677は)あなたのソリューションが – varontron

答えて

0

あなたは正規表現を使用することができますそれは最初の文字列の検索パターンです。一致(大文字小文字を区別しない)は結果から削除され、2番目の文字列には含まれない文字のみが残されます。結果の長さは、成功があったかどうかの表示です。 !を適用すると、正しい結果が得られます。

これは最速の解決策ではないかもしれません。ここで

良好なパフォーマンスのためにSetを使用して別のES6の選択肢です:

function mutation(arr) { 
    var chars = new Set([...arr[0].toLowerCase()]); 
    return [...arr[1].toLowerCase()].every (c => chars.has(c)); 
} 
+0

ケアは良い解決策のためのアイデアを提供することができます代替ソリューション – bhspencer

+0

追加の説明をどのように機能するかについての任意の説明を提供するために – trincot

+0

あなたが提供した最初の機能は、いくつかの選択された状況を除いて素晴らしい作品です。たとえば、突然変異(["floor"、 "for"])がfalseになります。しかし、突然変異(["floorf"、 "for"])が真実になります。この同じパターンは、b-fで始まるものすべてに当てはまります。なぜなら、私の人生にとっては、なぜその理由が分かりません。何か案は? -thanks – bleuz

0

あなたは配列に変換された文字列内のすべてのcharactcerが中に含まれているかどうかを確認するために、配列に文字列を変換するArray.from()Array.prototype.every()String.prototype.indexOf()を使用することができます他の配列要素の文字列。 ​​

関連する問題