今天碰到了一個問題,需要對一個數組矩陣進行去重處理。
創(chuàng)新互聯是一家專注于網站制作、成都網站設計與策劃設計,潁州網站建設哪家好?創(chuàng)新互聯做網站,專注于網站建設10多年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:潁州等地區(qū)。潁州做網站價格咨詢:028-86922220
比如如下數組矩陣:
[ [1, 2, 3], [2, 3, 4], [2, 1, 3], [5, 6, 7] ]
接下來是去重處理的方法。
1.適用于純數字數組矩陣和字符數字數組矩陣
// 本節(jié)用例: // 1.純數字數組矩陣 [ [1, 2, 3], [2, 3, 4], [2, 1, 3], [5, 6, 7] ] // 2.字符數字數組矩陣 [ ['1', '2', '3'], ['2', '3', '4'], ['2', '1', '3'], ['5', '6', '7'] ] // 如果數字和字符數字混合的話,類似于 [1, '2', 3] 和 ['1', '2', 3] 會被認為是等價的...
主要利用對象屬性名比較的方法,因為一個對象中每個屬性的屬性名是唯一的。
function unique(matrix) { let obj = {}; let res = []; matrix.map(item => { item.sort((a, b) => a - b); if (!obj.hasOwnProperty(item)) {// 判斷對象中是否有這個屬性名 obj[item] = item; res.push(item); } }) return res; }
上面的方法可以進一步優(yōu)化成為:
// 這樣更簡潔 function unique(matrix) { let res = {}; matrix.map(item => { item.sort((a, b) => a - b); res[item] = item; }) return Object.values(res); }
2.適用于純文字字符數組矩陣
// 本節(jié)用例: // 純文字字符數組矩陣 [ ["你的", "我", "它"], ["我", "你的", "它"], ["一", "二", "三"], ["三", "二", "一"], ["你d", "a", "它"], ["a", "你d", "它"], ["one", "two", "three"], ["three", "two", "one"] ]
分別利用對象屬性名比較和ES6語法中的Set
(1) 利用屬性名比較,將上面的方法稍微改動一下就可以實現
// 數組元素可能位置不同但元素內容相同,所以必須按照某一順序對其進行排序,這里按首字母對字符串進行排序 function _unique(matrix) { let res = {}; matrix.map(item => { item.sort((a, b) => a.localeCompare(b)); res[item] = item; }) return Object.values(res); }
(2) 利用ES6語法中的Set,Set中的每個值都是唯一的
function _unique(matrix) { let res = []; matrix.map(item => { res.push(item.sort((a, b) => a.localeCompare(b)).toString()); }) // return Array.from(new Set(res)).map(item => item.split(',')) return [...new Set(res)].map(item => item.split(','));// 上下等價 }
源碼在此
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯。
網站標題:JavaScript中如何對多維數組(矩陣)去重的實現
本文網址:http://m.2m8n56k.cn/article26/jdcijg.html
成都網站建設公司_創(chuàng)新互聯,為您提供全網營銷推廣、小程序開發(fā)、靜態(tài)網站、手機網站建設、品牌網站建設、
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯