關于這個有很多問題,但沒有一個解決了我的問題。
我有這個物件:
const default_keys = {
l: 1,
t: 5,
o: 10,
r: 50,
w: 100,
y: 500,
m: 1000,
f: 5000,
a: 10000,
z: 50000,
d: 100000,
q: 1000000
};
所以,在所有這些 key:value 項中,我想知道哪個鍵的 value = 100(在這種情況下它應該回傳“w”);
是否可以?
編輯:我試過這個解決方案,但它沒有用,因為它只適用于固定鍵名:
const object1 = {
a: {val: "aa"},
b: {val: "bb"},
c: {val: "cc"}
};
let a = Object.values(object1).find((obj) => {
return obj.val == "bb"
});
在這種情況下,固定名稱是“val”,但在我的情況下,沒有固定名稱..
uj5u.com熱心網友回復:
您可以獲取具有切換??鍵/值對的物件,并通過將值作為鍵來獲取鍵。
const
keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 },
values = Object.fromEntries(Object.entries(keys).map(([k, v]) => [v, k]));
console.log(values[100]);
uj5u.com熱心網友回復:
一種方法是遍歷Object.entries.
const default_keys = {
l: 1,
t: 5,
o: 10,
r: 50,
w: 100,
y: 500,
m: 1000,
f: 5000,
a: 10000,
z: 50000,
d: 100000,
q: 1000000
};
function getKey(object, value){
for (const [k, v] of Object.entries(object)) {
if(v == value) return k;
}
}
console.log(getKey(default_keys, 100));
另一種方法是使用find.
const default_keys = {
l: 1,
t: 5,
o: 10,
r: 50,
w: 100,
y: 500,
m: 1000,
f: 5000,
a: 10000,
z: 50000,
d: 100000,
q: 1000000
};
function getKey(object, value) {
let entry = Object.entries(object).find(item => item[1] == value);
if (entry) return entry[0];
}
console.log(getKey(default_keys, 100));
uj5u.com熱心網友回復:
以下是三種方法:
使用 for-in
const default_keys = {
l: 1,
t: 5,
o: 10,
r: 50,
w: 100,
y: 500,
m: 1000,
f: 5000,
a: 10000,
z: 50000,
d: 100000,
q: 1000000
}
// Method 1 using 'for in'
for (const key in default_keys) {
if (default_keys[key] === 100) {
console.log('For in: ', key)
}
}
使用 Object.keys 和回圈
// Method 2 using Object.keys and loops
let keys = Object.keys(default_keys)
keys.forEach(key => {
if (default_keys[key] === 100) console.log('Using Object.keys and loops: ', key)
})
使用 Object.entries
// Method 3: Functional Approach and using Object.entries
function getKey(obj) {
for (const [key, value] of Object.entries(obj)) {
if (value === 100) {
return key
}
}
}
console.log('Functional Approach:', getKey(default_keys))
uj5u.com熱心網友回復:
另一種簡單的方法是使用該filter()函式。
const default_keys = {
l: 1,
t: 5,
o: 10,
r: 50,
w: 100,
y: 500,
m: 1000,
f: 5000,
a: 10000,
z: 50000,
d: 100000,
q: 1000000
};
console.log(Object.keys(default_keys).filter((item) => default_keys[item] == 100)[0]);
如果您想接收多個結果,您可以洗掉,[0]然后您將獲得一個陣列。
uj5u.com熱心網友回復:
使用for...in:
const getKeyWithValue = (obj = {}, value) => {
let key;
for(const prop in default_keys) {
if(default_keys[prop] === value) {
key = prop;
break;
}
}
return key;
}
const default_keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 };
console.log( getKeyWithValue(default_keys, 100) );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/376507.html
標籤:javascript 目的
下一篇:如何遍歷物件內部的物件
