📜  js 在对象中按值查找键 - Javascript(1)

📅  最后修改于: 2023-12-03 15:32:22.902000             🧑  作者: Mango

JS 在对象中按值查找键

在 JavaScript 中,可以通过给定值查找对象中对应的键。这种操作相对于查找对象中对应键的值要更具挑战性,因为在一个对象中可能存在多个键对应相同的值。

方法一:for...in 循环

一种常见的方法是使用 for...in 循环遍历对象中的所有键,然后通过值找到对应的键。代码如下:

function findKeyByValue(obj, value) {
  for (var key in obj) {
    if (obj[key] === value) {
      return key;
    }
  }
}

这里的 obj 是要查找的对象,value 是要查找的值,如果找到了对应的键,则返回该键。

该方法的效率较低,并且在某些情况下可能会找到错误的键(例如对象中存在相同值的多个键)。

方法二:使用 Object.keys 和 Array.prototype.find

另一种方法是将对象的键数组与值数组断言为一一对应的数组,然后使用 Array.prototype.find 在值数组中查找对应的值,得到其索引,再使用 Object.keys 获取该索引对应的键。代码如下:

function findKeyByValue(obj, value) {
  var values = Object.values(obj);
  var index = values.indexOf(value);
  return index !== -1 ? Object.keys(obj)[index] : undefined;
}

这里使用了 ES6 的 Object.values 方法获取对象的值数组,如果在值数组中找到了对应的值,则返回该值对应的键;否则返回 undefined。

该方法相对于第一种方法效率更高,并且不会出现错误的情况。但是该方法需要兼容性更好的浏览器或者需要使用 polyfill。

总结

在 JavaScript 中,按值查找键是一种常见的操作。我们可以使用 for...in 循环或者 Object.keys 和 Array.prototype.find 这样的方法来实现,根据情况选择效率更高或者兼容性更好的方案。