欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS中給數(shù)組去重的方法小結(jié)

 更新時間:2024年08月14日 10:38:51   作者:Lipn  
給一個存放數(shù)字或字符串的數(shù)組去重很簡單,那么現(xiàn)在問題升級,如何一個數(shù)組a里面存放的元素是若干個數(shù)組,那么如何給這個數(shù)組a去重?本文給大家介紹了JS中給數(shù)組去重的方法小結(jié),需要的朋友可以參考下

基本思路:

  • 首先肯定毫無疑問地想到使用Set對數(shù)組進行去重,但是試過之后會發(fā)現(xiàn)單純地使用Set無法達到預(yù)期結(jié)果,因為數(shù)組里面的元素又是數(shù)組,而Set在進行去重時,并不會將[1,2]元素[1,2]元素判斷為相等,因為他們并不是同一個數(shù)組,只是數(shù)組里面存放的元素一樣。
  • 那么我們自然而然想到,我們需要想辦法讓Set認為[1,2]元素[1,2]元素相等。我剛開始想到的是使用數(shù)組的join(',')方法將數(shù)組變成字符串,例如[1,2].join(',')變成'1,2',去重之后再將Set里面的元素變成數(shù)組,例如'1,2'.split(',')變成['1','2']。但是這樣會有一個問題,最后得到的是['1','2'],而我們想要的是[1,2],所以這種方式達不到預(yù)期。
    此方式的完整代碼如下:
let arr = [
  [1, 2],
  [3, 4],
  [1, 2],
  [5, 6],
  [3, 4],
  [11, 13],
  [11, 12],
  [11, 13],
];

let temp = arr.map((item) => {
  return item.join(",");
});
console.log(temp);  // ['1,2','3,4','1,2','5,6','3,4','11,13','11,12','11,13']

let set = new Set(temp);
console.log(set);  // Set { '1,2', '3,4', '5,6', '11,13', '11,12' }

let res = [...set].map((item) => {
  return item.split(",");
});
console.log(res);
/*
[
  [ '1', '2' ],
  [ '3', '4' ],
  [ '5', '6' ],
  [ '11', '13' ],
  [ '11', '12' ]
]
*/

  • 最后,我們找到一種方式達到預(yù)期效果。使用JSON.stringify()JSON.parse()。
    代碼如下:
let arr = [
  [1, 2],
  [3, 4],
  [1, 2],
  [5, 6],
  [3, 4],
  [11, 13],
  [11, 12],
  [11, 13],
];

let temp = arr.map((item) => {
  return JSON.stringify(item);
});
console.log(temp);
/*
[
  '[1,2]',   '[3,4]',
  '[1,2]',   '[5,6]',
  '[3,4]',   '[11,13]',
  '[11,12]', '[11,13]'
]
*/

let set = new Set(temp);
console.log(set);
// Set { '[1,2]', '[3,4]', '[5,6]', '[11,13]', '[11,12]' }

let result = Array.from(set);
console.log(result);
// [ '[1,2]', '[3,4]', '[5,6]', '[11,13]', '[11,12]' ]

result = result.map((item) => {
  return JSON.parse(item);
});
console.log(result);
// [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 11, 13 ], [ 11, 12 ] ]

相關(guān)知識點:

1. JSON.stringify()

JSON.stringify() 方法將一個 JavaScript 對象或值轉(zhuǎn)換為 JSON 字符串。

使用 JSON.stringify() 示例:

JSON.stringify({}); // '{}'
JSON.stringify(true); // 'true'
JSON.stringify("foo"); // '"foo"'
JSON.stringify([1, "false", false]); // '[1,"false",false]'
JSON.stringify({ x: 5 }); // '{"x":5}'

2. JSON.parse()

JSON.parse() 方法用來解析 JSON 字符串,構(gòu)造由字符串描述的 JavaScript 值或?qū)ο蟆?/p>

使用 JSON.parse() 示例:

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null

3. Set與數(shù)組之間相互轉(zhuǎn)換

Set轉(zhuǎn)換成數(shù)組有兩種方式:
① [...set]② Array.from(set)

數(shù)組轉(zhuǎn)換成Set:new Set(arr)

// Set轉(zhuǎn)換成數(shù)組
let set = new Set();
set.add(1);
set.add(2);
set.add(2);
let arr = [...set];  // [1,2]
let arr2 = Array.from(set);  // [1,2]
// 數(shù)組轉(zhuǎn)換成Set
let arr = [1,2,2,3,1];
let set = new Set(arr);  // Set { 1, 2, 3 }

以上就是JS中給數(shù)組去重的方法小結(jié)的詳細內(nèi)容,更多關(guān)于JS數(shù)組去重的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)的一鍵連接wifi功能示例

    微信小程序?qū)崿F(xiàn)的一鍵連接wifi功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的一鍵連接wifi功能,結(jié)合實例形式分析了微信小程序操作WiFi連接的模塊初始化、配置、連接等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Three.js?中的屏幕空間環(huán)境光遮蔽SSAO

    Three.js?中的屏幕空間環(huán)境光遮蔽SSAO

    這篇文章主要為大家介紹了Three.js?中屏幕空間環(huán)境光遮蔽SSAO的原理及實現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 一文帶你玩轉(zhuǎn)JavaScript的箭頭函數(shù)

    一文帶你玩轉(zhuǎn)JavaScript的箭頭函數(shù)

    在ES6中新增了函數(shù)的簡寫方式----箭頭函數(shù),箭頭函數(shù)的出現(xiàn)不僅簡化了大量代碼,也讓代碼看起來更加優(yōu)雅,同時也解決了this指向問題,下面我們就來詳細講解如何玩轉(zhuǎn)箭頭函數(shù)
    2022-09-09
  • 使用JavaScript實現(xiàn)實時搜索建議功能

    使用JavaScript實現(xiàn)實時搜索建議功能

    在我們的技術(shù)旅程中,JavaScript 無疑是一個不可或缺的伙伴,這篇文章主要為大家詳細介紹了如何使用 JavaScript 來實現(xiàn)一個復(fù)雜功能,即實時搜索建議,感興趣的可以了解下
    2024-02-02
  • JavaScript實現(xiàn)的原生態(tài)兼容IE6可調(diào)可控滾動文字功能詳解

    JavaScript實現(xiàn)的原生態(tài)兼容IE6可調(diào)可控滾動文字功能詳解

    這篇文章主要介紹了JavaScript實現(xiàn)的原生態(tài)兼容IE6可調(diào)可控滾動文字功能,簡單說明了文字滾動的實現(xiàn)原理并結(jié)合具體實例形式給出了javascript文字滾動功能的具體實現(xiàn)代碼,需要的朋友可以參考下
    2017-09-09
  • JavaScript獲取客戶端IP的方法(新方法)

    JavaScript獲取客戶端IP的方法(新方法)

    這篇文章主要介紹了JavaScript獲取客戶端IP的方法(新方法)的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 微信小程序外賣選購頁實現(xiàn)切換分類與數(shù)量加減功能案例

    微信小程序外賣選購頁實現(xiàn)切換分類與數(shù)量加減功能案例

    這篇文章主要介紹了微信小程序外賣選購頁實現(xiàn)切換分類與數(shù)量加減功能,結(jié)合具體實例形式分析了微信小程序狀態(tài)記錄、判定及數(shù)值運算相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • JS判斷日期格式是否合法的簡單實例

    JS判斷日期格式是否合法的簡單實例

    下面小編就為大家?guī)硪黄狫S判斷日期格式是否合法的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JS動態(tài)給對象添加屬性和值的實現(xiàn)方法

    JS動態(tài)給對象添加屬性和值的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狫S動態(tài)給對象添加屬性和值的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • JS之相等操作符詳解

    JS之相等操作符詳解

    下面小編就為大家?guī)硪黄狫S之相等操作符詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論