數組去重【JavaScript】

數組去重,并且key和val相同的對象視為相同的,需要去重。

? ? ? ? 主函數:

/*** 數組去重* 兩個屬性相同的對象也認為是相同的* @param {Array} arr* @return {Array} */
function uniqueArray(arr) {const result = []// outer: 標簽,標記外層循環outer: for (const element of arr) {for (const res of result) {if (equal(element, res)) {continue outer}}result.push(element)}return result
}

? ? ? ? 輔助函數一:isPrimitive判斷原始類型

function isPrimitive(val) {return val === null || (typeof val !== "object" && typeof val !== "function")
}

? ? ? ? 輔助函數二:equal判斷兩個值是否相同

function equal(val1, val2) {if (isPrimitive(val1) || isPrimitive(val2)) {return Object.is(val1, val2)}const entries1 = Object.entries(val1)const entries2 = Object.entries(val2)const keys1 = Object.keys(val1)const keys2 = Object.keys(val2)if (entries1.length !== entries2.length) {return false}for (const key1 of keys1) {if (!keys2.includes(key1)) {return false}}// 雙向檢查才能正確判斷// const obj3 = { a: 1, b: 2 }      // const obj4 = { a: 1, b: 2, c: 3 }    for (const key2 of keys2) {if (!keys1.includes(key2)) {return false}}for (const [key, value] of entries1) {if (!equal(value, val2[key])) {return false}}return true
}

????????測試案例:

const arr = [{ name: "John", age: 25 },{ name: "Jane", age: 30 },{ name: "John", age: 25 }, // 重復對象[1, 2, 3],[1, 2, 3], // 重復數組"hello","hello",    // 重復字符串{ a: 1, b: undefined },{ a: 1, c: undefined }
]console.log(uniqueArray(arr))//打印
[{ name: 'John', age: 25 },{ name: 'Jane', age: 30 },[ 1, 2, 3 ],'hello',{ a: 1, b: undefined },{ a: 1, c: undefined }
]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94834.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94834.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94834.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于單片機設計的智能停車系統_271

文章目錄 一、前言 1.1 項目介紹 【1】項目開發背景 【2】設計實現的功能 【3】項目硬件模塊組成 【4】設計意義 【5】國內外研究現狀 【6】摘要 1.2 設計思路 1.3 系統功能總結 1.4 開發工具的選擇 【1】設備端開發 【2】上位機開發 1.5 參考文獻 1.6 系統框架圖 1.7 系統原理…

for in+邏輯表達式 生成迭代對象,最后轉化為列表 ——注意list是生成器轉化為列表,但[生成器]得到的就是一個列表,其中包含一個生成器元素

(int(digit) ** 2 for digit in str(n))這個不是 數組(list),而是一個 生成器表達式 (generator expression)。它的作用是:str(n) 把數字 n 轉成字符串,例如 n 82 → "82"。for digit in str(n) 遍歷字符串中的每個字符 → "…

通信算法之321:verilog中generate if 用法-綜合掉無用分支

文章目錄 一.示例代碼 二.優缺分析 三. generate - case 一.示例代碼 提示:參考 // 根據添加/補償頻偏的標志,確定使用的頻偏wire signed [WIDTH-1 : 0] freq;generateif(FREQ_FLAG == 1b1) beg

Shell 入門

目錄 一、Shell 是什么 二、 .sh 腳本調用 .py 腳本 Python 核心邏輯腳本(data_processor.py) Shell 腳本(pipeline.sh) 三、常見命令 四、.sh腳本 1. 簡單例子 2. 進階例子 3. 猜數字游戲 一、Shell 是什么 Shell 的本…

UNet改進(36):融合FSATFusion的醫學圖像分割

1. 注意力機制的理論基礎 1.1 空間注意力機制 空間注意力機制模擬人類視覺系統,能夠關注圖像中的顯著區域。其核心思想是根據特征圖的空間位置生成權重圖,突出重要區域并抑制無關信息。常見的實現方式是通過沿通道維度的池化操作獲取空間統計信息,然后通過卷積層生成空間注…

docker安裝kafka、zookeeper詳細步驟

Kafka 簡介 Kafka 是一個分布式流處理平臺,由 LinkedIn 開發并開源,主要用于高吞吐量的實時數據管道和流處理。 核心特性 高吞吐量:支持每秒百萬級消息處理,適合大數據場景。 持久化存儲:消息可持久化到磁盤,并支持多副本備份。 分布式架構:支持水平擴展,通過分區(P…

Photoshop - Ps 編輯圖像

使用基本圖像編輯技術,讓圖像展現出最好的一面。1.修剪和拉直使用裁剪工具,可以修剪邊緣,更改圖像的形狀和大小,甚至可以對圖像進行拉直和彎曲的操作。2.改善亮度和色彩點擊菜單欄-編輯-調整-亮度/對比度,調整圖像的亮…

SpringBoot 配置文件在運維開發中的應用

在 SpringBoot 項目的運維開發工作里,配置文件相關知識是繞不開的重要內容。它關乎著項目在不同環境下的靈活部署、參數調整,直接影響著應用的穩定性與可維護性。接下來,我們就從臨時屬性、屬性加載優先順序、配置文件分類這幾個維度&#xf…

雷卯國產化之SE3401完全替代AOS的AO3401

上海雷卯PMOS型號SE3401 pin to pin替代AOS型號AO3401,已經有很多客戶選用 SE3401替代AO3401,客戶可以獲得更好的價格和更快的交期。特別是在一些受空間收下限的小電子設備很受青睞。參數對比如下:以下是SE3401(P溝道MOSFET&#…

多語言與零樣本語音識別新突破:基于發音特征分類的方法

多語言與零樣本語音識別新突破:基于發音特征分類的方法 在語音識別領域,多語言和零樣本(zero-shot)語言的識別一直是一個極具挑戰性的課題。近期,京都大學的研究團隊提出了一種全新的方法,通過引入國際音標(IPA)和發音特征(Articulatory Features)來提升語音識別系統…

1.8 Memory

1.Memory簡介 2.Memory中各參數的功能和作用1.Memory簡介 1).Memory(內存)模塊它是unity中監視內存使用情況的關鍵工具, 它能幫助我們識別哪些資源在占有大量內存,是否存在內存泄露或垃圾回收頻繁等問題2).游戲中如果出現以下問題, 可以重點觀察memorya.游戲卡頓, 掉幀- 表現: …

國家統計局數據爬取——機器學習

這個代碼是一個用于爬取國家統計局網站數據的Python腳本。下面我將詳細解釋代碼的各個部分及其設計思路。 代碼結構概述 import requests # 發送HTTP請求 from bs4 import BeautifulSoup # 解析HTML import pandas as pd # 數據處理和存儲 import time # 時間控制 import…

內存管理(智能指針,內存對齊,野指針,懸空指針)

📌 1. 野指針 (Wild Pointer)什么是野指針?野指針指的是未初始化的指針變量。它指向的內存地址是隨機的、未知的。產生原因cppint* ptr; // 野指針!未初始化,指向隨機地址 *ptr 10; // 危險!可能破壞系統內存char* st…

Spring代理的特點

一.Spring代理的特點1.依賴注入和初始化影響的是原始的對象。2.代理和目標是兩個對象,二者成員變量不共用數據。二.測試首先準備以下幾個類。Bean1package com.example.springdemo.demos.a13;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.…

嵌入式學習日記(35)TCP并發服務器構建

單循環服務器:服務端同一時刻只能處理一個客戶端的任務并發服務器:服務端同一時刻可以處理多個客戶端的任務TCP并發服務器構建:TCP: 1. 建立連接,一對一TCP服務端并發模型:1. 多進程進程資源開銷大&#x…

【Flask】測試平臺開發實戰-第二篇

概述:在上一篇我們已經將后端初始化服務后前端的vue框架初始化已經搭建完整,并且可以運行看到界面,服務正常,當然我們看到的前端數據都是mock下的假數據,并不是真實的,這篇我們來開發實現第一個功能&#x…

聊一聊 .NET 的 AssemblyLoadContext 可插拔程序集

一:背景 1. 講故事 最近在分析一個崩潰dump時,發現禍首和AssemblyLoadContext有關,說實話這東西我也比較陌生,后來查了下大模型,它主要奔著替代 .NetFrameWork 時代的 AppDomain 的,都是用來做晚期加卸載&a…

Java中使用Spring Boot+Ollama實現本地AI的MCP接入

目錄結構完善spring bootpom.xml添加依賴application.ymlMCP 工具配置 mcp-servers.json配置類編寫API在我的上一篇文章搭建好本地的聊天機器人后,準備接入MCP進一步增強AI的能力,以實現類似手機AI的功能 參考的是第二篇文章鏈接其內容比較精煉&#x…

C#正則表達式與用法

🌟 C# 常用正則表達式與用法C# 使用正則需要引用命名空間:using System.Text.RegularExpressions; 常用方法:Regex.IsMatch(input, pattern) → 返回 bool,用于驗證Regex.Match(input, pattern) → 返回 Match 對象,可…

從0開始學習Java+AI知識點總結-27.web實戰(Maven高級)

一、分模塊設計與開發:讓項目結構更清晰1.1 為什么需要分模塊?單模塊開發的痛點在小型項目中,單模塊(所有代碼放在一個工程)或許能滿足需求,但項目規模擴大后會出現兩大核心問題:維護成本高&…