91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中如何對多維數組(矩陣)去重的實現

發布時間:2020-08-30 16:42:27 來源:腳本之家 閱讀:148 作者:Starlight 欄目:web開發

今天碰到了一個問題,需要對一個數組矩陣進行去重處理。

比如如下數組矩陣:

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

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

1.適用于純數字數組矩陣和字符數字數組矩陣

// 本節用例:
// 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;
}

上面的方法可以進一步優化成為:

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

2.適用于純文字字符數組矩陣

// 本節用例:
// 純文字字符數組矩陣
[
  ["你的", "我", "它"],
  ["我", "你的", "它"],
  ["一", "二", "三"],
  ["三", "二", "一"],
  ["你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(','));// 上下等價
}

源碼在此

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汨罗市| 龙江县| 封开县| 保定市| 周宁县| 蒲江县| 晋城| 沅江市| 长春市| 武强县| 贵港市| 盱眙县| 勐海县| 宁德市| 南宫市| 兴安县| 西畴县| 阜康市| 苏尼特左旗| 武乡县| 藁城市| 五台县| 阿拉善右旗| 陆河县| 新化县| 维西| 和静县| 莎车县| 礼泉县| 怀安县| 大埔区| 芒康县| 扎囊县| 宝清县| 商南县| 漳州市| 阿拉善左旗| 海晏县| 东莞市| 库尔勒市| 永平县|