使用 JavaScript 過濾關聯陣列
在本問題陳述中,我們的任務是編寫一個 JavaScript 程式,透過該程式我們可以簡單地使用另一個數組過濾關聯陣列。在討論給定問題的解決方案之前,讓我們首先熟悉關聯陣列。
什麼是關聯陣列?
關聯陣列是一種資料結構,用於儲存鍵值對。其中每個鍵都與賦給該鍵的值相關聯。此陣列中的鍵是唯一識別符號,可用於檢索其相應的值。在關聯陣列中,鍵沒有數字索引。鍵可以是任何字串或數值。當我們需要根據非數字鍵訪問資料時,可以使用此類陣列。
在JavaScript中,物件是一種關聯陣列,因為它們儲存鍵值對,其中鍵可以是任何字串或符號。讓我們來看一個例子。
const customer = {
name: 'Rishi',
age: 25,
city: 'Mumbai'
};
使用 filter() 和 includes() 方法
在這種方法中,宣告一個過濾器條件,它將充當另一個數組來過濾給定的資料陣列。藉助filter()方法,我們將過濾給定陣列中包含上述條件陣列名稱的項。並將結果儲存在已過濾的陣列中。
示例
讓我們看看上述方法的實際實現:
//define data with name and age
const data = [
{ name: 'Anita', age: 45 },
{ name: 'Tanvi', age: 20 },
{ name: 'Bittu', age: 32 }
];
//filter data on certain criteria
const filterCriteria = ['Anita', 'Bittu'];
const filteredData = data.filter(item => filterCriteria.includes(item.name));
console.log(filteredData);
上述程式碼的輸出為:
[ { name: 'Anita', age: 45 }, { name: 'Bittu', age: 32 } ]
複雜度
上述方法所花費的時間為 O(n),其中 n 是資料陣列中物件的個數。空間複雜度也是 O(n),因為我們建立了一個新陣列來儲存已過濾的物件。
使用 filter() 和 some() 方法
這是使用另一個數組過濾關聯陣列的另一種方法。在這裡,filter() 方法建立一個新陣列,其中包含透過提供的函式實現的測試的所有元素。然後,some() 方法測試陣列中至少有一個元素是否透過提供的函式實現的測試。
示例
在這個例子中,我們使用 filter() 和 some() 方法在 JavaScript 中使用另一個數組過濾關聯陣列。
// define an associative array
const data = [
{ name: 'Anita', age: 45 },
{ name: 'Tanvi', age: 20 },
{ name: 'Bittu', age: 32 }
];
// define the array to filter with
const filterCriteria = [20];
// custom filter function
function filterWithArray(item, filter) {
return filter.some(filterItem => filterItem === item.age);
}
// filter the associative array
const filteredData = data.filter(item => filterWithArray(item, filterCriteria));
console.log(filteredData);
執行上述程式碼後,將顯示以下輸出:
[ { name: 'Tanvi', age: 20 } ]
複雜度
上述程式碼的時間複雜度為 O(n * m),其中 n 是 data 陣列中的元素個數,m 是 filterCriteria 陣列中的元素個數。輔助空間複雜度為 O(1)。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP