[英]Get the key of a JS Object from the value
我試圖從輸入值中獲取 Typescript 中JS Object
的key
,問題是這些值在Array
內。
這是我在值不在數組中的情況下看到的:
const exampleObject = {
key1: 'Geeks',
key2: 'Javascript'
};
function getKeyByValue(object, value) {
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (object[prop] === value)
return prop;
}
}
}
console.log(getKeyByValue(exampleObject,'Geeks')) // key1
這是我想從中獲取密鑰的對象的示例:
const exampleObject = {
key1: ['Geeks','test1','test2'],
key2: ['Javascript','test3','test4']
};
function getKeyByValue(object, value) {
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (object[prop] === value)
return prop;
}
}
}
console.log(getKeyByValue(exampleObject,'Geeks')) // undefined
我需要在不使用Array.prototype.includes()
的情況下獲取密鑰,因為將結果變量鍵入為String
會給我一個error
,即它可能未定義。
我的問題:我不知道如何通過函數內部的數組來查找值並獲取密鑰
更新:
我想要的是避免返回未定義的可能性,因為輸入值將始終在對象內部,我該如何實現呢?
@segmet 你可以使用我的代碼
const exampleObject = {
key1: ['Geeks', 'test1', 'test2'],
key2: ['Javascript', 'test3', 'test4']
};
function getKeyByValue(object, value) {
var output = "";
for (var prop in object) {
// finding and removing element from array
object[prop].find(i => {
if (i === value) {
output = prop;
return prop;
}
}
)
}
return output
}
console.log(getKeyByValue(exampleObject, 'Geeks'))
function getKeyByValue(object, value) {
const key = Object.entries(object).filter(([key, val]) => val.includes(value));
return Object.fromEntries(key);
}
試試這個功能你會得到匹配你的鑰匙的對象
你可以做這樣的事情,然后檢查null
const getKeyFromValue = (obj:Object, value:string | string[]) => {
for (let key in obj) {
if (typeof value === 'string') {
if (obj[ key ].includes(value)) {
return key;
}
}
else if (Array.isArray(value)) {
if (obj[ key ].every(val => value.includes(val))) {
return key;
}
}
}
return null;
}
再試一次:
const exampleObject = { key1: ['Geeks','test1','test2'], key2: ['Javascript','test3','test4'] }; function getKeyByValue(obj, data) { for (const [key, value] of Object.entries(obj)) { return (~value.indexOf(data)) ? key : false } } console.log(getKeyByValue(exampleObject,'Geeks'))
您可以通過使用 3 個 JavaScript 方法 - Object.keys() 、 Array.find()和Array.indexOf() ,通過一行代碼來實現這一點:
const exampleObject = { key1: ['Geeks','test1','test2'], key2: ['Javascript','test3','test4'] }; function getKeyByValue(object, value) { const res = Object.keys(exampleObject).find(key => exampleObject[key].indexOf(value) !== -1); return res || '' } console.log(getKeyByValue(exampleObject,'Geeks'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.