在 JavaScript 中从值获取键

javascriptweb developmentfront end technology

在给定的问题陈述中,我们必须编写一个函数,该函数将帮助使用 Javascript 功能获取给定值的键。因此,在 Javascript 中,如果我们想从给定的对象访问键或值,我们可以通过点符号或括号符号来访问它。

理解问题陈述

问题陈述说我们必须从 Javascript 对象中的值中找到一个键。这意味着我们得到了一个 Javascript 对象和一个值,因此我们需要找到映射到对象中该值的相应键。

例如,我们有一个 Javascript 对象,如

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

因此,我们可以看到值,例如 value2,我们需要找到它的键,因此我们可以在此处看到 value2 的键是 key2。

给定问题的逻辑

为了解决给定的问题,我们可以遍历对象中的键值对,然后检查当前值是否与给定值匹配。如果值匹配,我们可以返回给定值的相应键。假设给定对象中的值未匹配,则我们必须将输出返回为 null,因为数据中没有这样的元素。

算法

步骤 1 - 定义一个函数来获取给定值的键。因此传递两个参数 - appObj 和 value。

步骤 2 - 因为我们必须找出密钥,所以为了存储密钥,我们将声明一个变量并借助entries方法初始化其值,并在此函数中传递appObj,对于此数据,我们将找到密钥和值的匹配项。

步骤 3 - 定义一个条件块来确定密钥对象的值是否等于密钥的实际值。如果条件为真,则返回密钥。

步骤 4 - 如果未检索到给定的值,则返回值为null。

算法代码

//用于获取给定值的密钥的函数
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)。


相关文章