您好,登錄后才能下訂單哦!
本篇內容主要講解“js如何判斷一個對象是否在一個對象數組中”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“js如何判斷一個對象是否在一個對象數組中”吧!
有一個對象數組,如:
var arr = [{"appName":"小何","appId":"1"},{"appName":"小王","appId":"2"}]
一般來說,常見的場景有兩個:
第一個是,比如鼠標點擊按鈕,往數組里push()一個對象,如果數組中已經存在了,那么就得提示不能添加。
第二個是,push()之后做去重處理,既對象數組去重。
使用includes()方法,意為存在,存在返回true,不存在返回false,重點是要結合JSON.stringify()序列化為字符串后再判斷,以下是示例代碼:
var arr = [{"appName":"小何","appId":"1"},{"appName":"小王","appId":"2"}] var obj = {"appName":"小王","appId":"2"} //如果數組arr中不存在字符串JSON.stringify(obj),那就可以添加,反之,則不添加 if(JSON.stringify(arr).includes(JSON.stringify(obj)) === false){ console.log('不存在') arr.push(obj) }else{ console.log('已存在') }
es6新增的includes()方法很強大,字符串,數組,對象均可使用,返回一個布爾值,比之前常用的indexof()語義化更強,且includes()的性能不錯!
我理解的對象數組去重是這樣的:
就是他們的屬性和值都得一樣,且他們的長度也是一樣的。
也就是說,key和value都得一樣才行,而且不能多不能少。
試著手寫了一下,嵌套了好幾層循環,性能不好,直接一步到位,以下是我的最優解:
lodash是前端常用的JS方法庫,就是將很多方法封裝起來,方便使用。
使用lodash的
_.uniqWith()方法,結合_.isEqual比較函數,即可較為完美的解決問題。
需要注意的是,_.isEqual()方法也是非常強大的,作用是比較兩個對象是否相等,這個方法非常實用,我經常用它,他是深層遞歸的,推薦。
代碼示例:
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; _.uniqWith(objects, _.isEqual); // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
到此,相信大家對“js如何判斷一個對象是否在一個對象數組中”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。