在 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+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告