JavaScript 通过值获取键
在给定的问题陈述中,我们需要编写一个函数,通过使用JavaScript功能来获取给定值的键。基本上,在JavaScript中,如果我们想从给定的对象中访问键或值,我们可以使用点符号或者括号表示法来访问。
理解问题陈述
问题陈述说我们需要在JavaScript对象中通过值找到一个键。这意味着我们给定了一个JavaScript对象和一个值,所以我们需要找到对应的键,这个键对应于对象中的那个值。
例如,我们有一个JavaScript对象:
{
key1: 'value1',
key2: 'value2',
key3: value3,
};
所以我们可以看到 e.g. value2 的值,我们需要找到它的键,所以在这里我们可以看到 value2 的键是 key2。
给定问题的逻辑
为了解决给定的问题,我们可以迭代对象中的键值对,然后检查当前值是否与给定值匹配。如果值匹配,我们可以返回给定值的对应键。假设给定对象中没有匹配的值,那么我们必须返回空输出,因为数据中没有这样的元素。
步骤
第一步 − 定义一个函数来获取给定值的键。所以传递两个参数 − appObj 和 value。
第二步 − 因为我们要找出键,所以为了存储键,我们将声明一个变量,并使用 entries 方法并在该方法内传递 appObj,以便在该数据中找到键和值的匹配。
第三步 − 定义一个条件块来确定键对象的值是否等于键的实际值。如果条件为真,则返回该键。
第四步 − 如果没有检索到给定值,则返回 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)。