最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

接下來(lái)是去重處理的方法。

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)文章

  • Js base64 加密解密介紹

    Js base64 加密解密介紹

    想必大家對(duì)base64并不陌生吧,在本文將為大家介紹下Js中的base64加密解密過(guò)程,感興趣的朋友不要錯(cuò)過(guò)
    2013-10-10
  • 淺談JS運(yùn)算符&&和|| 及其優(yōu)先級(jí)

    淺談JS運(yùn)算符&&和|| 及其優(yōu)先級(jí)

    下面小編就為大家?guī)?lái)一篇淺談JS運(yùn)算符&&和|| 及其優(yōu)先級(jí)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • 微信小程序開(kāi)發(fā)之實(shí)現(xiàn)別踩白塊游戲

    微信小程序開(kāi)發(fā)之實(shí)現(xiàn)別踩白塊游戲

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)微信小程序開(kāi)發(fā)一個(gè)簡(jiǎn)單的別踩白塊游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以和小編一起學(xué)習(xí)一下
    2023-02-02
  • 微信小程序?qū)崿F(xiàn)傳遞多個(gè)參數(shù)與事件處理

    微信小程序?qū)崿F(xiàn)傳遞多個(gè)參數(shù)與事件處理

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)傳遞多個(gè)參數(shù)與事件處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用Electron自制錄屏軟件

    使用Electron自制錄屏軟件

    錄屏軟件對(duì)于我們來(lái)說(shuō)都不陌生了,本文我們要做的事情是實(shí)現(xiàn)自己的錄屏軟件,載體使用Electron,因?yàn)樗m合錄制桌面的場(chǎng)景,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧
    2024-01-01
  • 用Golang運(yùn)行JavaScript的實(shí)現(xiàn)示例

    用Golang運(yùn)行JavaScript的實(shí)現(xiàn)示例

    這篇文章主要介紹了用Golang運(yùn)行JavaScript的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • js原生map實(shí)現(xiàn)的方法總結(jié)

    js原生map實(shí)現(xiàn)的方法總結(jié)

    在本篇文章里小編給大家整理了關(guān)于js原生map實(shí)現(xiàn)的方法以及實(shí)例分析內(nèi)容,需要的朋友們可以參考下。
    2020-01-01
  • 國(guó)外JavaScript經(jīng)典封裝集合整理

    國(guó)外JavaScript經(jīng)典封裝集合整理

    國(guó)外JavaScript經(jīng)典封裝集合整理...
    2007-05-05
  • JS實(shí)現(xiàn)的簡(jiǎn)單下拉框聯(lián)動(dòng)功能示例

    JS實(shí)現(xiàn)的簡(jiǎn)單下拉框聯(lián)動(dòng)功能示例

    這篇文章主要介紹了JS實(shí)現(xiàn)的簡(jiǎn)單下拉框聯(lián)動(dòng)功能,涉及javascript事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)修改相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 詳解JS如何進(jìn)行變量解構(gòu)

    詳解JS如何進(jìn)行變量解構(gòu)

    JavaScript中,可以使用解構(gòu)賦值的方式來(lái)對(duì)數(shù)組或者對(duì)象進(jìn)行變量解構(gòu),下面小編就來(lái)為大家詳細(xì)介紹一下JavaScript實(shí)現(xiàn)數(shù)組或者對(duì)象解構(gòu)的方法吧
    2023-11-11

最新評(píng)論

乌恰县| 怀化市| 济南市| 普宁市| 柘荣县| 博野县| 无为县| 白玉县| 西平县| 兖州市| 石渠县| 夹江县| 来安县| 弥渡县| 崇义县| 叶城县| 滨海县| 恩平市| 南平市| 武安市| 宝鸡市| 石狮市| 冷水江市| 民县| 孙吴县| 高雄县| 综艺| 岳普湖县| 湟中县| 德阳市| 揭阳市| 军事| 玉溪市| 比如县| 紫金县| 淮南市| 富裕县| 丰镇市| 沂南县| 密山市| 章丘市|