2016-02-26 47 views
0

我有一個函數,比較2個字符串的數組...例如['snookums', 'snook'],如果第二個字符串中的所有字母都出現在第一個字符串中,它會返回true,所以在這種情況下,它應該返回true。array.for eachach

我有一個工作循環:

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

不過,我想得到這個工作,以更好的方式,最終用foreach。我有它控制檯登出false如果它遇到一封不匹配的信件,但我想知道這項工作,如果它的forEachindexOf()返回true結束每個字母我將如何返回true

function mutation(arr) { 
return arr.pop() 
    .split('') 
    .forEach(function(letter) { 
     console.log(arr[0].indexOf(letter) === -1); 
    }); 
} 
console.log(mutation(["snookums", "for"])); 

這有道理嗎?

謝謝

回答

5

forEach 「更好」 的方式。你正在尋找的是every method

function mutation(arr) { 
    return arr[1].split("").every(function(letter) { 
     return arr[0].indexOf(letter) !== -1; 
    }); 
} 
+0

不錯,所以這隻會返回true,如果'every'元素找到匹配? – zeKoko

+0

確切地說,如果謂詞爲每個元素返回true,則返回true。 – Bergi

+0

完美,謝謝:) – zeKoko