JavaScript:在forEach里面return沒有效果


在最近學習並使用ES6過程中,在一次循環數組並且作判斷時返回值無效,return拿到的結果是undefined

 

我們分別使用for循環和forEach方法來驗證:

(function() {
	let arr = [1,2,3,4,5]
	for(let i =0; i < arr.length; i++) {
		console.log(arr[i])
		if(arr[i] == 3) {
			return
		}
	}
})();
console.log('---------------------');
(function(){
	let arr = [1,2,3,4,5]
	arr.forEach(item => {
		console.log(i)
		if(item == 3) {
			return
		}
	})
})();

 

結果:for循環里的可以return終止遍歷,forEach里的return不能終止遍歷

 以上是return終止for循環的遍歷和forEach循環的遍歷測試。

 

-------------------------------------------------------------- 分 割 線 ---------------------------------------------------------------------------------

我原本要實現的是通過判斷條件從而得到一個值返回出去,先來看看效果吧

console.log((function() {
    let arr = [1,2,3,4,5]
    for(let i =0; i < arr.length; i++) {
	if(arr[i] == 3) {
	    return i
	}
    }
})());
console.log('---------------------');
console.log((function(){
    let arr = [1,2,3,4,5]
    arr.forEach(item => {
        if(item == 3) {
	    return item
        }
    })
})());

打印結果如圖:

顯然:Array的forEach()方法是不能return的。

 

我的解決辦法是:定義一個變量,把我想返回的值保存下來,最后返回出去 (最佳方法待補充)

(function(){
    let arr = [1,2,3,4,5]
    let temp = ""
    arr.forEach(item => {
        if(item == 3) {
            temp = item
	}
    })
    return temp
})();

控制台打印結果:

如圖成功拿到符合判斷條件的這個數了

 

官方指路:

 

 

 

技術總結:

1.forEach 無法在所有元素都傳遞給調用的函數之前終止遍歷 / 在forEach方法里 return 無效

2.使用其它寫法:for循環、some()、every()、find()、findIndex()..

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM