亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2019年12月04日 09:13:25   作者:Starlight  
這篇文章主要介紹了JavaScript中如何對(duì)多維數(shù)組(矩陣)去重的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

比如如下數(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] 會(huì)被認(rèn)為是等價(jià)的...

主要利用對(duì)象屬性名比較的方法,因?yàn)橐粋€(gè)對(duì)象中每個(gè)屬性的屬性名是唯一的。

function unique(matrix) {
  let obj = {};
  let res = [];
  matrix.map(item => {
    item.sort((a, b) => a - b);
    if (!obj.hasOwnProperty(item)) {// 判斷對(duì)象中是否有這個(gè)屬性名
      obj[item] = item;
      res.push(item);
    }
  })
  return res;
}

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

// 這樣更簡(jiǎn)潔
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"]
]

分別利用對(duì)象屬性名比較和ES6語(yǔ)法中的Set

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

// 數(shù)組元素可能位置不同但元素內(nèi)容相同,所以必須按照某一順序?qū)ζ溥M(jìn)行排序,這里按首字母對(duì)字符串進(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語(yǔ)法中的Set,Set中的每個(gè)值都是唯一的

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(','));// 上下等價(jià)
}

源碼在此

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論