|
|
|
|
|
JavaScript中由于forEach
方法不能中斷循環(huán),為什么不能在forEach中使用break、continue或return?,所以若需要中斷循環(huán),我們便要用其他方法替代forEach
。本文我介紹兩種方法,分別使用every()
函數(shù)或some()
函數(shù)來實現(xiàn)。
every() 函數(shù)
使用 every()
函數(shù)測試數(shù)組中的所有元素,并且所有元素都必須通過測試。
句法
<script>
[].every((element, index, array) => {
//do your test here
return true;
});
</script>
讓我們嘗試一個遍歷數(shù)組但尚未進行任何測試的示例。但我們不會忘記返回一個布爾值。
<script>
['apple', 'mango', 'avocado', 'dragon fruit'].every(
(element, index, array) => {
console.log(
`${element}===${array[index]}is equals to ${
element === array[index]
}`
);
return true;
}
);
</script>
輸出
every()
函數(shù)是 forEach
的一個很好的替代品;讓我們看一個帶有測試實現(xiàn)的示例,然后讓我們在滿足特定條件時從 every()
函數(shù)中返回。
<script>
const fruitCollection = [
'apple',
'mango',
'avocado',
'dragon fruit',
'hamburger',
'banana',
];
const isEverythingAFruit = (element) => {
console.log(element);
if (element === 'hamburger') {
return false;
} else {
return true;
}
};
let result = fruitCollection.every(isEverythingAFruit);
if (!result) {
console.log('Not everything in the collection is a fruit');
}
</script>
輸出
some() 函數(shù)
some()
函數(shù)將測試數(shù)組的所有元素,但只有一個元素必須通過測試,因此使其成為替代 forEach
的理想選擇。一旦它通過某個條件,它就會退出循環(huán)。
語法
<script>
[].some(function (element, index, array) {
//do something here
});
</script>
例子
<script>
const fruitCollection = [
'apple',
'mango',
'avocado',
'dragon fruit',
'hamburger',
'banana',
];
fruitCollection.some((element) => {
console.log(element);
if (element === 'mango') {
return true;
}
return false;
});
</script>
上面給出的示例在返回 true 時跳出循環(huán)。因此,它沒有檢查數(shù)組中的所有元素。
輸出
總結(jié)
本文介紹了使用every()
和some()
函數(shù)替代forEach
中斷循環(huán)的方法,函數(shù)的用法比較簡單。此外,我也介紹過其他方法來中斷循環(huán),請參閱文章。
相關(guān)文章