在 JavaScript 中根據值獲取鍵


在給定的問題陳述中,我們必須編寫一個函式,該函式將幫助我們使用 Javascript 功能獲取給定值的鍵。所以基本上,在 Javascript 中,如果我們想從給定的物件中訪問鍵或值,我們可以透過點表示法或方括號表示法來訪問它。

理解問題陳述

問題陳述說我們必須從 Javascript 物件中的值中查詢鍵。這意味著我們給定一個 Javascript 物件和一個值,因此我們需要找到對映到物件中該值的相應鍵。

例如,我們有一個類似的 Javascript 物件

{
   key1: 'value1',
   key2: 'value2',
   key3: value3,
};

所以我們可以看到值,例如 value2,我們需要找到它的鍵,所以在這裡我們可以看到 value2 的鍵是 key2。

給定問題的邏輯

為了解決給定的問題,我們可以遍歷物件中的鍵值對,然後檢查當前值是否與給定值匹配。如果值匹配,我們可以返回給定值的相應鍵。假設給定物件中沒有匹配的值,那麼我們必須將輸出返回為 null,因為資料中沒有這樣的元素。

演算法

步驟 1 - 定義一個函式來獲取給定值的鍵。因此,傳遞兩個引數 - appObj 和 value。

步驟 2 - 因為我們必須找出鍵,所以為了儲存鍵,我們將宣告一個變數並使用 entries 方法初始化其值,並在該函式中傳遞 appObj,對於此資料,我們將找到鍵和值的匹配項。

步驟 3 - 定義一個條件塊來確定鍵物件的 value 是否等於鍵的實際 value。如果條件為真,則返回鍵。

步驟 4 - 如果未檢索到給定值,則返回的值為 null。

演算法程式碼

//function for getting the key of the given value
function keyByValue(appObj, value) {
   const [key] = Object.entries(appObj).find(([key, val]) => val === value) || [];
   return key || null;
}
const appObj = {
   Application1: 'Learning',
   Application2: 'Ecommerce',
   Application3: 'Software',
   Application4: 'Business',
   Application5: 'School',
};
 
const value1 = 'Ecommerce';
const value2 = 'Business';
const key1 = keyByValue(appObj, value1);
const key2 = keyByValue(appObj, value2);
 
console.log(key1);
console.log(key2);

複雜度

該方法的時間複雜度為 O(n),因為在最壞情況下我們需要遍歷所有鍵值對。演算法消耗的空間是常數 O(1)。因為我們沒有使用任何額外的資料結構。

結論

因此,對於上面的程式碼,我們使用 for 迴圈在 Javascript 物件中搜索值並獲取相應的鍵。此函式的時間複雜度為 O(n),空間複雜度為 O(1)。

更新於:2023年5月18日

2K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告