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

11種JavaScript前端數(shù)據(jù)去重方式總結(jié)

 更新時間:2023年06月12日 11:42:48   作者:jenemy  
這篇文章主要為大家總結(jié)了JavaScript去重的11種方式,各有優(yōu)缺點,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以根據(jù)需求合理使用

1.使用 for 循環(huán)和 indexOf 方法,復雜度 O(n^2)

function uniqueArray(arr) {
  const result = []
  for (let i = 0; i < arr.length; i++) {
    if (result.indexOf(arr[i]) === -1) {
      result.push(arr[i])
    }
  }
  return result
}

2.使用 for 循環(huán)和對象,復雜度 O(n^2)

function uniqueArray(arr) {
  const result = []
  const obj = {}
  for (let i = 0; i < arr.length; i++) {
    if (!obj[arr[i]]) {
      result.push(arr[i])
      obj[arr[i]] = true
    }
  }
  return result
}

3.使用 filter 方法和 indexOf 方法,復雜度 O(n^2)

function uniqueArray(arr) {
  return arr.filter((item, index, arr) => arr.indexOf(item) === index)
}

4.使用 filter 方法和對象,復雜度 O(n)

function uniqueArray(arr) {
  const obj = {}
  return arr.filter((item) => obj.hasOwnProperty(item) ? false : (obj[item] = true))
}

5.使用 Set 數(shù)據(jù)結(jié)構(gòu),復雜度 O(n)

function uniqueArray(arr) {
  return Array.from(new Set(arr))
}

// 使用解構(gòu) + Set
function uniqueArray(arr) {
  return [...new Set(arr)]
}

6.使用 Map 數(shù)據(jù)結(jié)構(gòu),復雜度 O(n)

function uniqueArray(arr) {
  const map = new Map();
  const result = [];
  for (let i = 0; i &lt; arr.length; i++) {
    if (!map.has(arr[i])) {
      map.set(arr[i], true);
      result.push(arr[i]);
    }
  }
  return result;
}

// or
function uniqueArray(arr) {
  const map = new Map();
  return arr.filter(function(item) {
    return !map.has(item) &amp;&amp; map.set(item, true);
  });
}

7.使用雙重循環(huán)和 splice 方法,復雜度 O(n^2)

function uniqueArray(arr) {
  for (var i = 0; i &lt; arr.length; i++) {
    for (var j = i + 1; j &lt; arr.length; j++) {
      if (arr[i] === arr[j]) {
        arr.splice(j, 1);
        j--;
      }
    }
  }
  return arr;
}

8.使用排序和雙指針

使用排序和雙指針可以實現(xiàn) O(nlogn) 的時間復雜度。先對數(shù)組進行排序,然后使用雙指針遍歷數(shù)組,如果左指針和右指針指向的值相同,就把右指針向右移動,直到找到不同的值,然后把左指針向右移動,繼續(xù)遍歷。

function uniqueArray(arr) {
  arr.sort();
  var left = 0, right = 1;
  var result = [];
  while (right &lt;= arr.length) {
    if (arr[left] === arr[right]) {
      right++;
    } else {
      result.push(arr[left]);
      left = right;
      right++;
    }
  }
  return result;
}

9.使用 reduce 方法和 includes,復雜度 O(n^2)

function uniqueArray(arr) {
  return arr.reduce(function(prev, cur) {
    if (!prev.includes(cur)) {
      prev.push(cur);
    }
    return prev;
  }, []);
}

10.使用遞歸和 includes,復雜度 O(n^2)

function uniqueArray(arr) {
  if (arr.length === 1) {
    return arr;
  } else {
    const first = arr[0];
    const rest = uniqueArray(arr.slice(1));
    if (rest.includes(first)) {
      return rest;
    } else {
      return [first].concat(rest);
    }
  }
}

11.雙層循環(huán),復雜度 O(n^2)

function uniqueArray(arr) {
  var result = [];
  for (var i = 0; i &lt; arr.length; i++) {
    for (var j = 0; j &lt; result.length; j++) {
      if (arr[i] === result[j]) {
        break;
      }
    }
    if (j === result.length) {
      result.push(arr[i]);
    }
  }
  return result;
}

到此這篇關于11種JavaScript前端數(shù)據(jù)去重方式總結(jié)的文章就介紹到這了,更多相關JavaScript數(shù)據(jù)去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 微信小程序支付包含uniapp方法超詳細講解

    微信小程序支付包含uniapp方法超詳細講解

    微信小程序支付流程涉及多個步驟和多個參與方的交互,下面這篇文章主要介紹了微信小程序支付包含uniapp方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-07-07
  • TypeScript判斷兩個數(shù)組的內(nèi)容是否相等的實現(xiàn)

    TypeScript判斷兩個數(shù)組的內(nèi)容是否相等的實現(xiàn)

    本文主要介紹了TypeScript?判斷兩個數(shù)組的內(nèi)容是否相等,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • Echarts自定義地圖和添加圖標代碼示例

    Echarts自定義地圖和添加圖標代碼示例

    這篇文章主要給大家介紹了關于Echarts自定義地圖和添加圖標的相關資料,項目中經(jīng)常會遇到需要渲染echarts地圖的情況,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • bootstrap Table的使用方法總結(jié)

    bootstrap Table的使用方法總結(jié)

    這篇文章主要為大家詳細介紹了bootstrap Table的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Javascript如何理解全國甲卷高考作文

    Javascript如何理解全國甲卷高考作文

    這篇文章主要介紹了Javascript如何理解全國甲卷高考作文,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • WebGL 顏色與紋理使用介紹

    WebGL 顏色與紋理使用介紹

    這篇文章主要為大家介紹了WebGL 顏色與紋理使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • javascript事件冒泡和事件捕獲詳解

    javascript事件冒泡和事件捕獲詳解

    最近在學習javascript中遇到了一些困難,比如冒泡和捕獲,很多次被提到,但又不知究竟應用在何處。找到了一些好文章解惑,在這里分享給大家。
    2015-05-05
  • JS時間戳與日期格式的轉(zhuǎn)換小結(jié)

    JS時間戳與日期格式的轉(zhuǎn)換小結(jié)

    這篇文章主要介紹了JS時間戳與日期格式的轉(zhuǎn)換小結(jié),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • JavaScript如何實現(xiàn)防止重復的網(wǎng)絡請求的示例

    JavaScript如何實現(xiàn)防止重復的網(wǎng)絡請求的示例

    這篇文章主要介紹了JavaScript如何實現(xiàn)防止重復的網(wǎng)絡請求的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • JavaScript DOM實現(xiàn)簡單留言板

    JavaScript DOM實現(xiàn)簡單留言板

    這篇文章主要為大家詳細介紹了JavaScript DOM實現(xiàn)簡單留言板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

游戏| 蚌埠市| 中江县| 蓬溪县| 平武县| 德兴市| 越西县| 崇阳县| 汕尾市| 垫江县| 新乡市| 区。| 文化| 齐河县| 吉林省| 太康县| 宁海县| 新野县| 拜泉县| 慈利县| 昭平县| 天门市| 定襄县| 雷州市| 平阴县| 贡觉县| 宜都市| 海伦市| 剑阁县| 宜川县| 安庆市| 唐山市| 富锦市| 抚顺市| 海安县| 武隆县| 南昌市| 霍州市| 黄石市| 河东区| 游戏|