使用 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)。

更新於:2024年9月11日

826 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.