中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

JavaScript中如何對多維數(shù)組(矩陣)去重的實現(xiàn)

今天碰到了一個問題,需要對一個數(shù)組矩陣進(jìn)行去重處理。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計與策劃設(shè)計,潁州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:潁州等地區(qū)。潁州做網(wǎng)站價格咨詢:028-86922220

比如如下數(shù)組矩陣:

[ [1, 2, 3], [2, 3, 4], [2, 1, 3], [5, 6, 7] ]

接下來是去重處理的方法。

1.適用于純數(shù)字?jǐn)?shù)組矩陣和字符數(shù)字?jǐn)?shù)組矩陣

// 本節(jié)用例:
// 1.純數(shù)字?jǐn)?shù)組矩陣
[
  [1, 2, 3],
  [2, 3, 4],
  [2, 1, 3],
  [5, 6, 7]
]
// 2.字符數(shù)字?jǐn)?shù)組矩陣
[
  ['1', '2', '3'],
  ['2', '3', '4'],
  ['2', '1', '3'],
  ['5', '6', '7']
]

// 如果數(shù)字和字符數(shù)字混合的話,類似于 [1, '2', 3] 和 ['1', '2', 3] 會被認(rèn)為是等價的...

主要利用對象屬性名比較的方法,因為一個對象中每個屬性的屬性名是唯一的。

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;
}

上面的方法可以進(jìn)一步優(yōu)化成為:

// 這樣更簡潔
function unique(matrix) {
  let res = {};
  matrix.map(item => {
    item.sort((a, b) => a - b);
    res[item] = item;
  })
  return Object.values(res);
}

2.適用于純文字字符數(shù)組矩陣

// 本節(jié)用例:
// 純文字字符數(shù)組矩陣
[
  ["你的", "我", "它"],
  ["我", "你的", "它"],
  ["一", "二", "三"],
  ["三", "二", "一"],
  ["你d", "a", "它"],
  ["a", "你d", "它"],
  ["one", "two", "three"],
  ["three", "two", "one"]
]

分別利用對象屬性名比較和ES6語法中的Set

(1) 利用屬性名比較,將上面的方法稍微改動一下就可以實現(xiàn)

// 數(shù)組元素可能位置不同但元素內(nèi)容相同,所以必須按照某一順序?qū)ζ溥M(jìn)行排序,這里按首字母對字符串進(jìn)行排序
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(','));// 上下等價
}

源碼在此

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站標(biāo)題:JavaScript中如何對多維數(shù)組(矩陣)去重的實現(xiàn)
本文網(wǎng)址:http://www.rwnh.cn/article26/jdcijg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、小程序開發(fā)、靜態(tài)網(wǎng)站手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
星座| 玉龙| 黎平县| 深圳市| 富宁县| 湘乡市| 磐石市| 仪陇县| 安西县| 横峰县| 呼玛县| 雷波县| 曲靖市| 江西省| 乐平市| 腾冲县| 洛浦县| 多伦县| 罗源县| 深泽县| 中宁县| 新宾| 深水埗区| 深水埗区| 永吉县| 且末县| 吉安市| 乐山市| 兴城市| 措勤县| 普安县| 海南省| 陵川县| 长沙市| 视频| 天峻县| 广州市| 利津县| 湖南省| 姚安县| 马关县|