JavaScript 之數組遍歷(迭代)方法介紹

ES5中一共有五種數組遍歷(迭代)方法,它們都會對數組中每一個元素執行一些業務,且都不會修改原數組,這些方法包括:數組

一、some() 若是該函數任意一項返回 true,則返回 true,若是所有返回 false 則最終返回 false框架

二、every() 若是該函數每一項都返回 true,則返回 true, 不然返回 false函數

三、filter() 會返回一個新數組,該數組是由知足條件的任意項組成code

四、forEach() 該函數沒有返回值,本質上與使用 for 循環迭代數組同樣ip

五、map() 最終會返回一個通過操做後的新數組;it

其中 some() 和 every() 是很是類似的,它們都會返回一個 boolean,主要區別就在於,前者數組中只要有一項知足條件便可返回 true,然後者須要每一項都要知足條件才返回 trueconsole

let arr = [2, 3, 4, 5];

let res = arr.every((item, index ,arr) => {
    return item > 4
});

let otherRes = arr.some((item, index, arr) => {
    return item > 4
});

console.log(res); // false

console.log(otherRes); // true

能夠看到 arr 數組中只有 5 知足了大於4,而 every() 方法要求必須每一項都返回 true 才知足,而 some()方法只要數組中有至少一項知足條件便可,因此 5 知足了條件則返回了 true;渲染


filter()循環

這個方法就是指定一些條件而後過濾掉,而後返回知足條件的元素再組成數組,並不會影響原數組結構;遍歷

let arr = [2, 3, 4, 5];

let res = arr.filter((item, index ,arr) => {
    return item > 3
});

console.log(res); // [ 4, 5 ]

console.log(arr); // [ 2, 3, 4, 5 ]

簡單明瞭


再來看一下 forEach() 方法:

它並無返回值,和 for 遍歷相似:

let arr = [2, 2, 3, 4, 4, 5];

let newArr = [];

arr.forEach((item, index ,arr) => {
    if (newArr.indexOf(item) === -1) {
        newArr.push(item)
    }
    return newArr
});

console.log(newArr); // [ 2, 3, 4, 5 ]

這裏簡單實現了一個數組去重,固然即然剛剛說 forEach() 和 for 類似,看看代碼如何體現:

let arr = [2, 2, 3, 4, 4, 5];

let newArr = [];

for (let i = 0; i < arr.length; i++) {
    if (newArr.indexOf(arr[i]) === -1) {
        newArr.push(arr[i])
    }
}

console.log(newArr); // [ 2, 3, 4, 5 ]

區別只不過 for遍歷中 arr[i] 至關於 forEach中callback函數中的item參數

forEach() 看起來更清晰簡潔一些


最後就要說一下 map() 這個方法:

在 React 這個框架中其實咱們常常見到這個方法,一般用來作渲染 list

先看一下用法:

let arr = [1, 2, 3];

let newArr = arr.map((item, index ,arr) => {
    return item * 2
});

console.log(newArr); // [ 2, 4, 6 ]

map() 方法是讓每一個元素執行指定邏輯,最後再返回一個新的數組;

數組的遍歷(迭代)方法就說到這裏,歡迎有問題和錯誤指出,也歡迎閱讀我近期關於TypeScript的相關介紹。

相關文章
相關標籤/搜索