【前言】
本系列為個人前端學習之路的學習筆記,在過往的學習過程中累積了很多筆記,如今想藉著IT邦幫忙這個平台做整理+再複習。
本系列標題一律以【】標示該篇文章主要涉及的內容,例如【JavaScript】、【Vue】等等。
若內容有誤,還麻煩各路大神不吝於點出問題,感激不敬。
在JavaScript中有許多操作陣列的方法,本篇將針對some()陣列.some(callback function)
會將陣列中的資料逐一比對,檢查是否有某個元素,如果有回傳true,沒有回傳false
例如這是一個「陣列中是否有3」的範例:
const array = [1, 2, 3, 4, 5];
const res = array.some(function(item, index, array){
return item === 3;
});
console.log(res); //true
與先前提過的filter()、forEach()、map()一樣
都有item、index、array三個參數,分別為陣列資料本身、索引位置、陣列本身(不過三個都同時用到的機會不常見就是了,大部分的情況下只會用到item)
例如這是一個「商品是否已經收藏」的範例:
const favorite = [
{
title: "馬克杯",
id: "123456"
}
];
let id = "123456";
let hasFavorite = favorite.some((item) =>{
return item.id === id;
});
console.log(hasFavorite); //true
這個案例看起來就好像實際會出現了,透過some()我們得到了一個布林值,這個值代表著該筆資料是否存在於陣列之中
知道這件事情之後就可以做很多事情了
例如如果點擊收藏按鈕,但該商品已經收藏,就取消關注該商品,反之,如果本來沒有收藏,則加到我的最愛中
上述的情況相信大家生活中應該多少都有遇到,應該算是比較親民的案例(?
雖然前面說some()是「檢查是否有某個元素,如果有回傳true,沒有回傳false」
可能會被理解為,就是檢查有陣列中沒有A,判斷式一定只能使用===之類的,但其實不然
準確地說,some()會把陣列中的資料一筆筆帶進去,當某一次判斷式為true的時候回傳true,反之,則false
例如這是一個「陣列中是否一筆資料大於3」的範例:
const array = [1, 2, 3, 4, 5];
const res = array.some(function(item, index, array){
return item > 3;
});
console.log(res); //true
所以說some()是「當某一次判斷式為true的時候回傳true,反之,則false」是更準確的說法
通常用在查找陣列中是否有某筆資料,有則做A行為沒則做B行為