【JavaScript】阵列方法之some()

【前言】
本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着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行为


<<:  【gem】database_cleaner 为你的测试数据做清理

>>:  【C#】Two Sum

鬼故事 - 不可能,我家防火墙天下无敌

鬼故事 - 不可能,我家防火墙天下无敌 Credit: rick and morty 灵感来源:UC...

初探 Domain driven design

Domain Driven Design 是一个最近开始在台湾红起来的一种设计以及开发方式,他的出现...

网路的小技巧

//兴趣记录一下~希望退休以後可以回味,各位别嫌弃,感谢各位!! // CCNA-1 Login ,...

Day 5 - 如果有如果

前言 上次介绍了变数是甚麽?这次就来说明程序的一些功能吧!所以为什麽我们需要使用程序语言,为甚麽不直...

[深入浅出MQTT]: v3.1.1与v5 的差异

[深入浅出MQTT]: v3.1.1与v5 的差异 MQTT v3.1.1 与 v5 完全相容,且提...