溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS中forEach()、map()、every()、some()和filter()怎么用

發布時間:2022-05-11 10:20:57 來源:億速云 閱讀:249 作者:iii 欄目:開發技術

今天小編給大家分享一下JS中forEach()、map()、every()、some()和filter()怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一、forEach(),用于遍歷數組,無返回值

這里先給出一個數組(以下例子通用):

var arr = [1,-2,3,4,-5];

然后我要做事情的就是,將數組中的每一項翻倍。

arr.forEach(function(item,index,array){
    array[index] = item * 2;
});
console.log(arr);   // [2,-4,6,8,-10]

可以看到,forEach()可以傳入一個匿名函數作為參數,而該匿名函數有含有三個參數,其依次代表數組遍歷時的當前元素item,數組遍歷時的當前元素的索引index,以及正在遍歷的數組array。有了這三個參數,可以方便我們做很多事情,比如說示例當中將每一項數組元素翻倍,這時需要用到第一個參數item。但是,僅僅只是將item乘以2可不行,我們還得將其賦值給原來的數組,這時我們就得用到后面兩個參數index和array。

根據上述可知,array[index]是全等于item的。

arr.forEach(function(item,index,array){
    console.log(array[index] === item);   // true
});

二、map(),用于遍歷數組,返回處理之后的新數組

var newArr = arr.map(function(item,index,array){
    return item * 2;
});
console.log(newArr);   // [2,-4,6,8,-10]

可以看到,該方法與forEach()的功能類似,只不過map()具有返回值,會返回一個新的數組,這樣處理數組后也不會影響到原有數組。

三、every(),用于判斷數組中的每一項元素是否都滿足條件,返回一個布爾值

var isEvery = arr.every(function(item,index,array){
    return item > 0;
});
console.log(isEvery);   // false

可以看到,示例中是要判斷數組arr中的元素是否都為正數,很顯然不是,所以該方法最終返回false。

四、some(),用于判斷數組中的是否存在滿足條件的元素,返回一個布爾值

var isSome = arr.some(function(item,index,array){
    return item < 0;
});
console.log(isSome);   // true

可以看到,該方法與every()類似,示例中是要判斷數組arr中是否存在負數元素,很顯然存在,所以該方法最終返回true。

五、filter(),用于篩選數組中滿足條件的元素,返回一個篩選后的新數組

var minus = arr.filter(function(item,index,array){
    return item < 0;
});
console.log(minus);   // [-2, -5]

可以看到,示例中是要篩選出數組arr中的所有負數,所以該方法最終返回一個篩選后的新數組[-2, -5]。

補充: 以上五大方法除了傳遞一個匿名函數作為參數之外,還可以傳第二個參數,該參數用于指定匿名函數內的this指向,例如:

// 只傳一個匿名函數
arr.forEach(function(item,index,array){
    console.log(this);  // window
});
// 傳兩個參數
arr.forEach(function(item,index,array){
    console.log(this);  // [1, -2, 3, 4, -5]
},arr);

兼容性: 由于以上方法均屬ES5方法,所以IE8及其以下瀏覽器均不兼容。

補充小結:

map():有返回值,可以return出來

forEach():沒有返回值

filter():返回一個符合func條件的元素數組(并沒有改變原數組)

some():返回一個boolean,判斷是否有元素是否符合func條件(有一個就行)(并沒有改變原數組)

every():返回一個boolean,判斷每個元素是否符合func條件(所有都判斷)(并沒有改變原數組)

重點總結:

① forEach()無返回值,map()和filter()返回新數組,every()和some()返回布爾值
② 匿名函數中this指向默認為window,可通過傳第二參數來更改之
③ 五種遍歷方法均為ES5方法

以上就是“JS中forEach()、map()、every()、some()和filter()怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女