」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何根據多個條件過濾 JavaScript 物件數組?

如何根據多個條件過濾 JavaScript 物件數組?

發佈於2024-11-08
瀏覽:437

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

基於多個條件過濾JavaScript中的數組

問題陳述

給定一個對象數組和一個過濾器對象,目標是過濾和根據篩選器中指定的多個條件簡化陣列。但是,當過濾器包含多個屬性時,會出現一個特定問題。

建議的解決方案

考慮以下程式碼段:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i 

在建議的解決方案中,當過濾器包含多個屬性時會出現問題。具體來說,在第二次迭代期間,users[i][prop] 和 filter[prop] 之間的比較不正確。為了解決這個問題,我們可以將程式碼修改為以下內容:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Apply filter on the array
      users = users.filter((user) => user[prop] === filter[prop]);
    }
  }
  return result;
}

在此版本中,我們利用陣列內建的過濾方法來動態套用篩選條件。這可確保結果中僅包含滿足所有指定條件的物件。

用法範例

使用更新的解決方案,過濾過程將如預期般運作:

var users = [{
  name: 'John',
  email: '[email protected]',
  age: 25,
  address: 'USA'
}, {
  name: 'Tom',
  email: '[email protected]',
  age: 35,
  address: 'England'
}, {
  name: 'Mark',
  email: '[email protected]',
  age: 28,
  address: 'England'
}];

var filter = {
  address: 'England',
  name: 'Mark'
};

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]

這個解決方案解決了多個篩選條件不適用的問題正確應用,確保產生的篩選數組準確反映指定的條件。

最新教學 更多>
  • 如何在 PHP 中使用 SimpleXML 從頭開始建立 XML 物件?
    如何在 PHP 中使用 SimpleXML 從頭開始建立 XML 物件?
    使用 SimpleXML 從頭開始建立 XML 物件SimpleXML 是 PHP 函式庫,提供用於操作 XML 文件的全面功能。常常會出現一個疑問:是否可以完全從頭開始建立 XML 物件? 最初,SimpleXML 似乎只允許匯入現有的 XML 字串,禁止從頭開始直接建立 XML 物件。然而,經過...
    程式設計 發佈於2024-11-08
  • 如何存取 Flask 路由中的查詢參數和查詢字串?
    如何存取 Flask 路由中的查詢參數和查詢字串?
    訪問Flask 路由中的查詢字串使用Flask 時,必須能夠存取查詢參數和您的路由中的查詢字串有效處理使用者輸入和處理資料的路由。讓我們探討一下如何做到這一點。 考慮以下範例路線:@app.route("/data") def data(): # query_string...
    程式設計 發佈於2024-11-08
  • 您的 Java 日誌實用程式類別是否將其自身報告為日誌來源?了解如何修復它!
    您的 Java 日誌實用程式類別是否將其自身報告為日誌來源?了解如何修復它!
    在現代軟體開發的快節奏環境中,有效的日誌記錄對於高效的調試和系統監控至關重要。但是,日誌輸出中不一致或不準確的行號可能會使故障排除變得非常耗時。最近,我發現我們的內部日誌記錄實用程式將自身報告為日誌來源。需要解決這個問題以提高日誌精確度。 問題 當使用自訂實用程式類別來處理日誌時...
    程式設計 發佈於2024-11-08
  • 如何透過重複較短的清單來壓縮不等長的清單?
    如何透過重複較短的清單來壓縮不等長的清單?
    透過重複較短的清單來壓縮不同大小的清單當嘗試壓縮兩個長度不等的清單時,內建的zip 函數會失效透過不重複較短的列表來匹配較大的列表來縮短。為了克服這個問題,需要替代方法。 使用 itertools.cycle 的解決方案itertools.cycle 函數提供了無限迭代可迭代物件的能力。可以利用此功...
    程式設計 發佈於2024-11-08
  • 如何使用Python透過SFTP安全傳輸檔案?
    如何使用Python透過SFTP安全傳輸檔案?
    在 Python 中透過 SFTP 進行安全檔案傳輸安全地傳輸檔案對於維護資料完整性至關重要。 SFTP(SSH 檔案傳輸協定)是一種安全協議,可確保透過 SSH(安全外殼)連接進行檔案傳輸。 對於希望實現 SFTP 功能的 Python 開發人員,強烈建議像 Paramiko 這樣的函式庫。 Pa...
    程式設計 發佈於2024-11-08
  • 聘請 Unity 開發人員:讓沉浸式遊戲精彩
    聘請 Unity 開發人員:讓沉浸式遊戲精彩
    从游戏开发和互动的高潮中可以明显看出,即使只有一小部分时间,Unity 3D 无疑是用于开发沉浸式多平台体验的最广泛使用的平台之一。您开发移动游戏、虚拟体验、增强现实应用程序 - 无论您的想法是什么,Unity 3D 开发人员现在都可以将其变为现实。然而,找到合适的人才并不容易,尤其是在当今蓬勃发展...
    程式設計 發佈於2024-11-08
  • 如何在頁面載入後動態載入較少的樣式表?
    如何在頁面載入後動態載入較少的樣式表?
    動態加載LESS 樣式表<link rel="stylesheet/less" href="/static/less/style.less" /> <script src="http://lesscss.googlecode.com...
    程式設計 發佈於2024-11-08
  • 使用 Python 列表的優雅而簡單的方法:列表推導式
    使用 Python 列表的優雅而簡單的方法:列表推導式
    您可能認為列表理解是一個高級概念。然而,在棘手的情況下,它只需一行就可以簡化您的程式碼。是時候了解它是如何運作的了。我將用示例.在初級水平上解釋它 列表理解到底是什麼? 您經常看到符號 l2 = [x 1 for x in l]。據說是這樣的: l2 = [] for x in l:...
    程式設計 發佈於2024-11-08
  • 如何從 Java WebDriver 執行 JavaScript 程式碼?
    如何從 Java WebDriver 執行 JavaScript 程式碼?
    從Java執行WebDriver JavaScript:增強指南問題中提到的命令./go webdriverjs是一個shell命令設計在特定文件夾中設定並初始化WebDriverJs 環境。但是,需要注意的是,WebDriverJs 是一種語言綁定,它支援 JavaScript 測試,而不是從 J...
    程式設計 發佈於2024-11-08
  • 下載網頁到ESP或簡單可程式控制器
    下載網頁到ESP或簡單可程式控制器
    為了將網頁儲存到ESP8266的FLASH中,我特地用delphi編寫了一個軟體工具。 該軟體工具從一個資料夾中讀取所有網頁檔案(包括html、css、js、圖片等),並將其打包為二進位檔案。 將ESP8266的GPIO0接地即可啟動,ESP8266進入串口下載模式。 然後使用下載軟體選擇打包...
    程式設計 發佈於2024-11-08
  • 為我的 D&D 表建立自訂 Stream Deck:使用自訂 SDK 解決遊戲手把整合問題
    為我的 D&D 表建立自訂 Stream Deck:使用自訂 SDK 解決遊戲手把整合問題
    作為一個熱情的龍與地下城玩家和技術愛好者,我決定通過創建一個帶有嵌入式屏幕的定制咖啡桌來提升我的遊戲設置。這張桌子顯示地圖、代幣、播放音效,甚至為玩家展示藝術品。所有這一切都透過一個名為 Foundry VTT 的強大平台運行,該平台與 Roll20 類似,但具有更好的定價模型和廣泛的開放模組系統。...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中有效率地計算兩個日期之間的月份數?
    如何在 PHP 中有效率地計算兩個日期之間的月份數?
    有效找出日期之間的月份計數一個常見的程式設計挑戰是確定兩個日期之間的月份數。在 PHP 中,有許多方法可以解決這個問題。 使用 DateTime 類別 (PHP >= 5.3):PHP 5.3 中引入的 DateTime 類別提供了方便的方法用於日期操作。計算月份差異:$d1 = new DateT...
    程式設計 發佈於2024-11-08
  • Bootstrap:建立和自訂導覽列
    Bootstrap:建立和自訂導覽列
    介紹 Bootstrap 是一個開源框架,廣泛用於 Web 開發,用於建立響應式且適合行動裝置的網站。 Bootstrap 的關鍵元件之一是導覽欄,它是一個水平導覽欄,用於組織和導覽網站的內容。在本文中,我們將討論使用 Bootstrap 建立和自訂導覽列的優點和缺點及其功能。 ...
    程式設計 發佈於2024-11-08
  • 將 WebSocket 與 Python 結合使用
    將 WebSocket 與 Python 結合使用
    什麼是 WebSocket? WebSocket 是一種支援瀏覽器和伺服器之間即時、雙向通訊的協定。傳統的 HTTP 通訊涉及客戶端發送請求和伺服器回應以交換資料。相較之下,使用 WebSocket,一旦建立了初始連接,客戶端和伺服器都可以相互發送和接收訊息,而無需重複建立新連接。...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中從子網域中提取網域?
    如何在 PHP 中從子網域中提取網域?
    在PHP 中從子域中提取域名在當代Web 開發中,必須解析和檢索域名,甚至是從子域中解析和檢索網域名稱。一個簡單的範例可能包括諸如“here.example.com”或“example.org”之類的網域。為了滿足這一需求,我們提出了一個全面的 PHP 函數,旨在從任何給定的輸入中提取根域名。 結合...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3