我試圖從輸入值中獲取 Typescriptkey中的 a ,問題是這些值在.JS ObjectArray
這是我在值不在陣列中的情況下看到的:
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(),因為鍵入結果變數 asString會給我一個error它可能是未定義的。
我的問題:我不知道如何通過函式內部的陣列來查找值并獲取密鑰
更新:
我想要的是避免回傳未定義的可能性,因為輸入值將始終在物件內部,我該如何實作呢?
uj5u.com熱心網友回復:
@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;
}
}
)
break;
}
return output
}
console.log(getKeyByValue(exampleObject, 'Geeks'))
uj5u.com熱心網友回復:
您可以通過使用 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'))
uj5u.com熱心網友回復:
function getKeyByValue(object, value) {
const key = Object.entries(object).filter(([key, val]) => val.includes(value));
return Object.fromEntries(key);
}
試試這個功能你會得到匹配你的鑰匙的物件
uj5u.com熱心網友回復:
你可以做這樣的事情,然后檢查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;
}
uj5u.com熱心網友回復:
再試一次:
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'))
uj5u.com熱心網友回復:
簡單的,
const exampleObject = {
key1: ['Geeks','test1','test2'],
key2: ['Javascript','test3','test4']
};
function getKeyByValue(object, value) {
for (const key in object) {
if (Object.hasOwnProperty.call(object, key)) {
for (let i = 0; i < object[key].length; i ) {
if (object[key][i] === value) {
return key;
}
}
}
}
}
console.log(getKeyByValue(exampleObject,'test3'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477930.html
標籤:javascript 数组 打字稿
