iT邦幫忙

0

【JavaScript】陣列方法之some()

  • 分享至 

  • xImage
  •  

【前言】
本系列為個人前端學習之路的學習筆記,在過往的學習過程中累積了很多筆記,如今想藉著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()不只可以使用===

雖然前面說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行為


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言