根據陣列物件的某個屬性值找到指定的元素

2021-08-22 14:45:21 字數 882 閱讀 3395

最近專案有個位址白名單彈窗顯示的需求,如果使用者選取的位址不在白名單內就彈窗提示客戶。一開始覺得這是乙個非常簡單需求,只要使用for迴圈判斷一下客戶所選位址的城市**在不在白名單城市**內就行了,不在就彈窗提示客戶所選位址不在白名單內。

以下是白名單(陣列物件):

citylist = [

]

以下是for迴圈的**:

/*

* sendcitycode 為客戶所選城市編碼

*/for (var i=0; ilength; i++)

}

這麼寫法,當白名單城市為乙個的時候是沒有問題,但是如果白名單城市大於1個時,因為所選位址是有且只有乙個,所以for迴圈一定會觸發if的條件語句,這樣會照成不管你選**,白名單一定會觸發的死結。

所以使用for迴圈匹配的思路明顯不符合此時的需求,後來轉變思路:只要所選位址能與白名單的位址中的某乙個匹配就行,也就是我要在白名單物件的位址編碼屬性值找到客戶所選的位址編碼

此時白名單城市列表為:

citylist = [

,]

處理方法:

var arr= citylist.filter(function(item))//注意,得到的arr也是乙個陣列物件,所以只需要判斷一下陣列的長度不為0,就知道客戶所選位址編碼在不在白名單編碼內了

if(arr.length==0)

這裡所用的是filter方法:

filter() 方法將匹配元素集合縮減為匹配指定選擇器的元素.該方法不改變原陣列,返回的是篩選後滿足條件的陣列.

以上基本完成了需求。

根據陣列物件的某個屬性值找到指定的元素

1.現在有乙個陣列物件,也就是陣列元素是物件型別,現在的需求是根據物件的某個屬性值,找到該陣列對應的元素 物件 比如根據 bianma 11 找到對應的 name 為 商品房 該陣列物件資料如下 var datas 我們可以通過對陣列進行篩選操作 var data datas.filter func...

陣列物件根據某個值相同合併陣列

var arr var map dest for var i 0 i arr.length i map ai.id ai else console.log dest var obj var temp obj.foreach function item,index else temp skey res...

根據陣列物件的某個屬性重新劃分陣列

根據陣列物件某個值,將所有具有相同屬性的值的物件劃分為乙個集合 案例 根據區域 areaname 劃分車次 劃分前 劃分後 具體根據stationobj改變屬性 areatrain stationtrain var stationobj oldobj.stations.push stationobj...