根据数组对象的某个属性值找到指定的元素

最近项目有个地址白名单弹窗显示的需求,如果用户选取的地址不在白名单内就弹窗提示客户。一开始觉得这是一个非常简单需求,只要使用for循环判断一下客户所选地址的城市代码在不在白名单城市代码内就行了,不在就弹窗提示客户所选地址不在白名单内。

以下是白名单(数组对象):

cityList = [
    {
        cityCode :"A350500000",
        provinceCode : "A350000000"
    }
]

以下是for循环的代码:

/*
* sendCityCode 为客户所选城市编码
*/
for (var i=0; i<cityList.length; i++) {

    if(cityList[i].cityCode != sendCityCode){
        console.log(“所选地址不在白名单内”)   
    }
}

这么写法,当白名单城市为一个的时候是没有问题,但是如果白名单城市大于1个时,因为所选地址是有且只有一个,所以for循环一定会触发if的条件语句,这样会照成不管你选哪里,白名单一定会触发的死结。
所以使用for循环匹配的思路明显不符合此时的需求,后来转变思路:只要所选地址能与白名单的地址中的某一个匹配就行,也就是我要在白名单对象的地址编码属性值找到客户所选的地址编码

此时白名单城市列表为:

cityList = [
    {
        cityCode :"A350500000",
        provinceCode : "A350000000"
    },
    {
        cityCode :"A361100000",
        provinceCode : "A360000000"
    }
]

处理方法:

var arr= cityList.filter(function(item){
    return item.cityCode == sendCityCode; 
})
//注意,得到的arr也是一个数组对象,所以只需要判断一下数组的长度不为0,就知道客户所选地址编码在不在白名单编码内了
if(arr.length==0){
    console.log(“所选地址不在白名单内”)
}

这里所用的是filter方法:
filter() 方法将匹配元素集合缩减为匹配指定选择器的元素.该方法不改变原数组,返回的是筛选后满足条件的数组.

以上基本完成了需求。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值