有什么方法可以使用 属性 value/s 获取 JavaScript 对象的 属性 name/s 吗?
Is there any way to get a JavaScript object's property name/s using property value/s?
假设我有一个像这样的 JavaScript 对象:
var myObject = {
key1: "value1",
key2: "value2",
key3: "value3"
}
我们都知道我可以通过使用 myObject ['key1']
得到 value1
,但是有什么方法可以反过来,比如 myObject ["value1"]
返回 'key1'
?
我知道我可以使用
var values = Object.values (myObject);
var index = values.indexOf ("value1");
var keys = Object.keys (myObject);
keys [index];
要做到这一点,但那只是啰嗦。我也明白,当多个键具有相同的值时,这会更加麻烦。我只是想知道是否有其他方法可以让做这样的事情更容易。
我会制作一个颠倒键和值的对象,然后使用普通的 属性 查找:
var myObject = {
key1: "value1",
key2: "value2",
key3: "value3"
}
var reversedObj = Object.fromEntries(
Object.entries(myObject).map(entries => entries.reverse())
);
console.log(reversedObj.value1);
console.log(reversedObj.value3);
不过,请记住,这取决于值的唯一性。
如果您需要区分字符串值和 non-string 值,例如 key1: 123
与 key2: '123'
,请改用 Map(因为普通对象只能有字符串(和符号)键, 但映射键可以是 任何类型)
var myObject = {
key1: 123,
key2: "123",
key3: "value3"
}
var reversedMap = new Map(
Object.entries(myObject).map(entries => entries.reverse())
);
console.log(reversedMap.get('123'));
console.log(reversedMap.get(123));
当然,您可以遍历键并按值过滤:
值不必是唯一的,您将获得一组键。
而且您不必事先反转对象。
const obj = {a: 1, b: 2};
const value = 1;
const keys = Object.keys(obj).filter(key => obj[key] === value);
console.log(keys);
假设我有一个像这样的 JavaScript 对象:
var myObject = {
key1: "value1",
key2: "value2",
key3: "value3"
}
我们都知道我可以通过使用 myObject ['key1']
得到 value1
,但是有什么方法可以反过来,比如 myObject ["value1"]
返回 'key1'
?
我知道我可以使用
var values = Object.values (myObject);
var index = values.indexOf ("value1");
var keys = Object.keys (myObject);
keys [index];
要做到这一点,但那只是啰嗦。我也明白,当多个键具有相同的值时,这会更加麻烦。我只是想知道是否有其他方法可以让做这样的事情更容易。
我会制作一个颠倒键和值的对象,然后使用普通的 属性 查找:
var myObject = {
key1: "value1",
key2: "value2",
key3: "value3"
}
var reversedObj = Object.fromEntries(
Object.entries(myObject).map(entries => entries.reverse())
);
console.log(reversedObj.value1);
console.log(reversedObj.value3);
不过,请记住,这取决于值的唯一性。
如果您需要区分字符串值和 non-string 值,例如 key1: 123
与 key2: '123'
,请改用 Map(因为普通对象只能有字符串(和符号)键, 但映射键可以是 任何类型)
var myObject = {
key1: 123,
key2: "123",
key3: "value3"
}
var reversedMap = new Map(
Object.entries(myObject).map(entries => entries.reverse())
);
console.log(reversedMap.get('123'));
console.log(reversedMap.get(123));
当然,您可以遍历键并按值过滤: 值不必是唯一的,您将获得一组键。 而且您不必事先反转对象。
const obj = {a: 1, b: 2};
const value = 1;
const keys = Object.keys(obj).filter(key => obj[key] === value);
console.log(keys);