日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

前端面試:你以為這只是一個簡單的數組去重嗎?

來源: 責編: 時間:2024-04-10 08:36:31 255觀看
導讀前言之前面試過程被問到數組去重有哪些方式?心想這個問題我會,隨便也能說出好幾種,也不帶多思考的。巴拉巴拉巴拉巴拉。說完,面試官好像不太滿意的樣子,還問了句,沒了嗎。我想,咋滴,就這些還不不夠用嗎。然后就下一題了。后來

前言

之前面試過程被問到數組去重有哪些方式?心想這個問題我會,隨便也能說出好幾種,也不帶多思考的。巴拉巴拉巴拉巴拉。說完,面試官好像不太滿意的樣子,還問了句,沒了嗎。我想,咋滴,就這些還不不夠用嗎。然后就下一題了。F4o28資訊網——每日最新資訊28at.com

后來我看到這樣的數據,忽然意識到,之前的面試怕不是草率了,完全沒考慮復雜數據結構,難怪他聽完不太滿意的樣子。F4o28資訊網——每日最新資訊28at.com

let arr = [1, 1, '2', 3, 1, 2,    { name: '張三', id: { n: 1 }},    { name: '張三', id: { n: 1 }},    { name: '張三', id: { n: 2 }}]

在平時的開發過程中這樣的數據應該少見,絕大部分的數組中數據格式應該保持一致,特殊情況就不管他了。F4o28資訊網——每日最新資訊28at.com

今天再來出一期數組去重的方式。F4o28資訊網——每日最新資訊28at.com

基本數據類型去重

確實有多種方式,比如set結構轉一下,lodash提供的uniq方法,或者自己利用其他方式實現也是很多的。今天就介紹幾個F4o28資訊網——每日最新資訊28at.com

當面試官詢問數組去重時,可以考慮到數組可能包含基本數據類型、引用數據類型,或者混合了兩種類型的情況。以下是針對不同情況的多種思路和實現方法:F4o28資訊網——每日最新資訊28at.com

使用 Set 數據結構(ES6)F4o28資訊網——每日最新資訊28at.com

const array = [1, 2, 3, 3, 4, 5, 5];const uniqueArray = [...new Set(array)];console.log(uniqueArray); // [1, 2, 3, 4, 5]

使用 Array.prototype.filter()F4o28資訊網——每日最新資訊28at.com

const array = [1, 2, 3, 3, 4, 5, 5];const uniqueArray = array.filter((item, index) => array.indexOf(item) === index);console.log(uniqueArray); // [1, 2, 3, 4, 5]

使用 Array.prototype.reduce()F4o28資訊網——每日最新資訊28at.com

const array = [1, 2, 3, 3, 4, 5, 5];const uniqueArray = array.reduce((acc, curr) => {    if (!acc.includes(curr)) {        acc.push(curr);    }    return acc;}, []);console.log(uniqueArray); // [1, 2, 3, 4, 5]

使用 for 循環和 Array.prototype.indexOf()F4o28資訊網——每日最新資訊28at.com

const array = [1, 2, 3, 3, 4, 5, 5];const uniqueArray = [];for (let i = 0; i < array.length; i++) {    if (uniqueArray.indexOf(array[i]) === -1) {        uniqueArray.push(array[i]);    }}console.log(uniqueArray); // [1, 2, 3, 4, 5]

Lodash 是一個非常流行的 JavaScript 工具庫,提供了許多實用的函數來簡化開發過程。它也包含了一些用于數組去重的方法。以下是幾種利用 Lodash 實現數組去重的方法:F4o28資訊網——每日最新資訊28at.com

使用 _.uniq() 方法F4o28資訊網——每日最新資訊28at.com

const _ = require('lodash');const array = [1, 2, 3, 3, 4, 5, 5];const uniqueArray = _.uniq(array);console.log(uniqueArray); // [1, 2, 3, 4, 5]

使用 _.uniqWith() 方法(使用自定義比較函數)F4o28資訊網——每日最新資訊28at.com

const _ = require('lodash');const array = [{id: 1}, {id: 2}, {id: 1}];const uniqueArray = _.uniqWith(array, (a, b) => _.isEqual(a, b));console.log(uniqueArray); // [{id: 1}, {id: 2}]

2. 數組包含引用數據類型:

使用 Set 數據結構,利用自定義比較函數(如果需要去重對象數組)F4o28資訊網——每日最新資訊28at.com

const array = [{id: 1}, {id: 2}, {id: 1}];const uniqueArray = Array.from(new Set(array.map(JSON.stringify)), JSON.parse);console.log(uniqueArray); // [{id: 1}, {id: 2}]

使用 Array.prototype.reduce()F4o28資訊網——每日最新資訊28at.com

const array = [{id: 1}, {id: 2}, {id: 1}];const uniqueArray = array.reduce((acc, current) => {    const isExist = acc.some(item => JSON.stringify(item) === JSON.stringify(current));    if (!isExist) acc.push(current);    return acc;}, []);console.log(uniqueArray); // [{id: 1}, {id: 2}]

上面都是使用了JSON.stringfy。但有個問題,如果引用數據的順序不一樣,轉的string就不等了。所以還是自己實現一個方法好一些。F4o28資訊網——每日最新資訊28at.com

使用自定義比較函數

這種方法適用于任何類型的數組,包括混合了基本數據類型和引用數據類型的數組。F4o28資訊網——每日最新資訊28at.com

function uniqueArray(array) {    const seen = new Map();    return array.filter(item => {        if (typeof item === 'object' && item !== null) {            const key = Object.keys(item).sort().map(k => `${k}:${item[k]}`).join('|');            if (!seen.has(key)) {                seen.set(key, true);                return true;            }        } else {            if (!seen.has(item)) {                seen.set(item, true);                return true;            }        }        return false;    });}const array = [1, 2, {id: 1}, {id: 2}, 1, {id: 1}];const uniqueArr = uniqueArray(array);console.log(uniqueArr); // [1, 2, {id: 1}, {id: 2}]

這個方法利用了 Map 數據結構的特性,用鍵來存儲數組中的元素,保證了元素的唯一性。對于對象,通過將屬性名排序并拼接成字符串來判斷是否重復。F4o28資訊網——每日最新資訊28at.com

如果都是引用結構,我們平時也可以使用 _.uniqBy() 方法去重,比如根據id什么的F4o28資訊網——每日最新資訊28at.com

const _ = require('lodash');const array = [{id: 1}, {id: 2}, {id: 1}];const uniqueArray = _.uniqBy(array, JSON.stringify);console.log(uniqueArray); // [{id: 1}, {id: 2}]

本文鏈接:http://m.www897cc.com/showinfo-26-82509-0.html前端面試:你以為這只是一個簡單的數組去重嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Java并發編程實戰:信號量Semaphore的使用技巧與示例

下一篇: 探索React 19:四個實用新鉤子功能

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩视频在线一区二区观看视频| 久久青草欧美一区二区三区| 亚洲看片网站| 一本色道久久综合一区| 亚洲欧美日韩国产另类专区| 久久久久**毛片大全| 欧美成人精品在线| 国产精品久久久久久久久久免费 | 欧美在线免费播放| 国产模特精品视频久久久久 | 国产精品激情电影| 狠狠色丁香婷婷综合久久片| 亚洲久久一区二区| 欧美伊人久久| 欧美国产亚洲另类动漫| 国产欧美欧洲在线观看| 亚洲精品在线观看免费| 欧美一区二区视频在线观看2020 | 欧美日韩一区二区视频在线观看| 国产欧美日韩一区| 亚洲人成网站精品片在线观看 | 日韩视频一区| 久久精品亚洲国产奇米99| 欧美人与禽猛交乱配| 国产一区二区久久| 一本色道久久综合亚洲精品小说| 久久青草欧美一区二区三区| 国产精品高清在线| 91久久精品一区| 久久黄色影院| 国产精品毛片一区二区三区| 亚洲国产精品综合| 欧美在线精品免播放器视频| 欧美日韩在线播放一区| 亚洲第一伊人| 亚洲欧洲精品一区| 久久riav二区三区| 欧美天堂亚洲电影院在线观看 | 亚洲一区二区三区免费视频| 欧美成人精品福利| 国产一区二区三区成人欧美日韩在线观看 | 欧美日韩精品综合在线| 在线观看精品视频| 欧美中文字幕视频在线观看| 欧美三级视频在线播放| 亚洲国产日韩综合一区| 久久精品最新地址| 国产精品一区视频| 亚洲一区二区三区中文字幕在线 | 久久精品一本| 国产精品一区二区三区乱码| 在线亚洲精品福利网址导航| 欧美精品一卡| 最新成人av在线| 久久这里只精品最新地址| 国产午夜精品一区二区三区欧美 | 99精品国产一区二区青青牛奶| 欧美a级一区| 在线播放亚洲| 久久久水蜜桃| 国内外成人免费激情在线视频网站 | 欧美日产国产成人免费图片| 亚洲国产精品视频| 久久综合久久久久88| 红桃视频国产一区| 久久精品成人一区二区三区蜜臀| 国产精品一区二区女厕厕| 亚洲一区在线直播| 国产精品白丝黑袜喷水久久久| 日韩亚洲不卡在线| 欧美日韩爆操| 一区二区三区四区五区精品视频| 欧美日韩国产成人在线91| 亚洲毛片网站| 欧美日韩一区二区在线观看| 一二三区精品| 欧美性事免费在线观看| 亚洲一区二区成人在线观看| 国产精品久久九九| 亚洲视频1区2区| 国产精品久久久久高潮| 亚洲欧美在线aaa| 国产区亚洲区欧美区| 欧美与黑人午夜性猛交久久久| 国产视频一区二区在线观看| 久久精品91久久久久久再现| 狠狠久久亚洲欧美| 久色成人在线| 91久久精品美女高潮| 欧美黄色影院| 在线中文字幕一区| 国产精品老牛| 欧美制服丝袜| 伊人蜜桃色噜噜激情综合| 欧美顶级大胆免费视频| 亚洲精品国产系列| 久久av最新网址| 狠狠色丁香久久婷婷综合丁香| 久热国产精品视频| 亚洲精品久久久久久下一站 | 欧美日韩在线观看一区二区| 亚洲综合精品自拍| 国产日韩在线一区二区三区| 久久久精品性| 亚洲国产精品视频一区| 欧美日韩第一区| 亚洲欧美一级二级三级| 黄色成人在线观看| 欧美精品色一区二区三区| 亚洲视频香蕉人妖| 国产一区二区三区日韩| 欧美freesex8一10精品| 一区二区三区欧美成人| 国产色综合网| 欧美成人一区二区三区| 亚洲中字黄色| 在线欧美影院| 欧美午夜片在线观看| 久久国产一区| 亚洲精品社区| 欧美人与性动交α欧美精品济南到| 欧美日本不卡| 亚洲一本视频| 国模吧视频一区| 欧美国产日韩精品| 亚洲一区二区在线免费观看视频 | 欧美无砖砖区免费| 午夜在线视频一区二区区别| 亚洲福利在线看| 欧美午夜一区二区福利视频| 久久都是精品| 99re成人精品视频| 国产一区二区三区久久| 欧美精品激情在线观看| 先锋影音久久久| 91久久夜色精品国产网站| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 亚洲国产精品久久久久秋霞不卡| 欧美日韩欧美一区二区| 久久九九国产精品| 在线亚洲观看| 一区在线视频观看| 国产精品高潮呻吟久久av无限| 久久亚洲捆绑美女| 亚洲永久免费观看| 91久久国产综合久久蜜月精品| 国产欧美一区二区视频| 亚洲激情在线观看视频免费| 国产精品成人v| 国产精品一区免费观看| 久久亚洲捆绑美女| 一区二区三区四区国产| 精品不卡视频| 国产精品爱久久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲视频一区在线观看| **网站欧美大片在线观看| 国产精品乱人伦一区二区 | 亚洲国产婷婷香蕉久久久久久99| 国产精品一区二区久久久久 | 亚洲成色精品| 国产日韩欧美综合一区| 欧美午夜精品一区二区三区| 免费人成网站在线观看欧美高清| 久久国产欧美| 午夜在线精品| 亚洲影视在线| av成人免费在线观看| 亚洲高清久久| 国内精品久久久久久久97牛牛| 国产精品家庭影院| 欧美日韩福利| 久久精品色图| 亚洲欧美激情精品一区二区| 亚洲福利在线观看| 很黄很黄激情成人| 国产女主播一区二区三区| 欧美精品午夜| 欧美国产日韩精品| 久久综合九色综合久99| 久久精品日产第一区二区| 午夜久久久久| 亚洲一区二区三区在线播放| 一本色道久久精品| 日韩亚洲一区在线播放| 亚洲三级免费电影| 亚洲激情成人| 亚洲国产成人午夜在线一区| 怡红院精品视频在线观看极品| 国产一级精品aaaaa看| 国产乱理伦片在线观看夜一区| 国产精品v欧美精品v日韩精品| 欧美日韩亚洲视频| 欧美日韩中文字幕精品| 欧美日韩小视频| 欧美日韩中文字幕| 欧美视频一区| 国产精品护士白丝一区av| 国产精品久久久久免费a∨大胸| 国产精品国产馆在线真实露脸| 国产精品九九久久久久久久| 欧美手机在线| 欧美三级在线播放| 国产精品护士白丝一区av|