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

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

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

基本思路:

  • 首先肯定毫無(wú)疑問(wèn)地想到使用Set對(duì)數(shù)組進(jìn)行去重,但是試過(guò)之后會(huì)發(fā)現(xiàn)單純地使用Set無(wú)法達(dá)到預(yù)期結(jié)果,因?yàn)閿?shù)組里面的元素又是數(shù)組,而Set在進(jìn)行去重時(shí),并不會(huì)將[1,2]元素[1,2]元素判斷為相等,因?yàn)樗麄儾⒉皇峭粋€(gè)數(shù)組,只是數(shù)組里面存放的元素一樣。
  • 那么我們自然而然想到,我們需要想辦法讓Set認(rèn)為[1,2]元素[1,2]元素相等。我剛開(kāi)始想到的是使用數(shù)組的join(',')方法將數(shù)組變成字符串,例如[1,2].join(',')變成'1,2',去重之后再將Set里面的元素變成數(shù)組,例如'1,2'.split(',')變成['1','2']。但是這樣會(huì)有一個(gè)問(wèn)題,最后得到的是['1','2'],而我們想要的是[1,2],所以這種方式達(dá)不到預(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' ]
]
*/

  • 最后,我們找到一種方式達(dá)到預(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)知識(shí)點(diǎn):

1. JSON.stringify()

JSON.stringify() 方法將一個(gè) JavaScript 對(duì)象或值轉(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() 方法用來(lái)解析 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é)的詳細(xì)內(nèi)容,更多關(guān)于JS數(shù)組去重的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    微信小程序外賣(mài)選購(gòu)頁(yè)實(shí)現(xiàn)切換分類(lèi)與數(shù)量加減功能案例

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

    JS判斷日期格式是否合法的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇JS判斷日期格式是否合法的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • JS動(dòng)態(tài)給對(duì)象添加屬性和值的實(shí)現(xiàn)方法

    JS動(dòng)態(tài)給對(duì)象添加屬性和值的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇JS動(dòng)態(tài)給對(duì)象添加屬性和值的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • JS之相等操作符詳解

    JS之相等操作符詳解

    下面小編就為大家?guī)?lái)一篇JS之相等操作符詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09

最新評(píng)論