2015-07-20 29 views

回答

1

您只需循環一次,然後將第二個數組與第一個數組進行比較。

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

爲什麼不直接返回false,當你發現第一個-1? [示例](http://jsfiddle.net/toby3105/u3saaLzn/) – trebor

+0

您將要刪除空格並忽略字符大小寫。在分割字符串之前,執行'arr [0] .replace(new RegExp('','g'),'').toLowerCase()' – Prancer

1

我用上面的答案,但修改了它刪除的情況下,否則我是越來越虛假的對你好,並招呼

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

被接受的答案中的計數器是不必要的。

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

,因爲如果在數組中的第一個字是不是第二個短則需要第二個for循環

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

需要2循環

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 
上面的代碼不會在所有情況下 工作
0

清潔劑如何?只是對上面的代碼進行一些修改。對於這個問題

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

即使較小的代碼

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

乾淨,現代和易於閱讀:

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

相關問題