[英]get key of element in array which is inside object
我有一個數組,里面有一個 object。 試圖獲取數組內元素的鍵。
當我搜索 4512 時,我應該將 key 作為 egg_code。
const items = {
storeItems: {
milk_code: [1212, 9898, 1214],
vegetables_code: [2222, 75674, 8943, 3452],
eggs_code: [4543, 4512, 1754, 9090]
}
}
if (items.storeItems.includes(4512)) {
const type = Object.keys(items(4512);
console.log(type);
}
您需要迭代storeItems
的鍵/值對,搜索值以返回鍵
const findKey = (obj, search) => { for (let [ key, val ] of Object.entries(obj)) { if (val.includes(search)) return key } return null } const items = { storeItems: { milk_code: [1212, 9898, 1214], vegetables_code: [2222, 75674, 8943, 3452], eggs_code: [4543, 4512, 1754, 9090] } } console.info(findKey(items.storeItems, 4512))
這將返回找到(按定義順序)具有匹配值的第一個鍵。
如果該值可以出現在多個值中並且您想返回所有匹配項,則可以使用簡單的過濾器
const findKeys = (obj, search) => { return Object.keys(obj).filter(key => obj[key].includes(search)) } const items = { storeItems: { milk_code: [1212, 9898, 1214, 4512], // added 4512 here vegetables_code: [2222, 75674, 8943, 3452], eggs_code: [4543, 4512, 1754, 9090] } } console.info(findKeys(items.storeItems, 4512))
這里是 go:
const search_q = 4512; let k = null; const items = { storeItems: { milk_code: [1212, 9898, 1214], vegetables_code: [2222, 75674, 8943, 3452], eggs_code: [4543, 4512, 1754, 9090] } } Object.keys(items.storeItems).forEach(item => { if(items.storeItems[item].includes(search_q)) k = item; }) console.log(k)
使用Object.entries
和find
方法
const items = { storeItems: { milk_code: [1212, 9898, 1214], vegetables_code: [2222, 75674, 8943, 3452], eggs_code: [4543, 4512, 1754, 9090], }, }; const getKey = (obj, val) => Object.entries(obj).find(([key, arr]) => arr.includes(val))?.shift(); console.log(getKey(items.storeItems, 4512));
你可以寫一點 function 來為你做。 這個 function 第一次找到代碼時匹配。
const items = { store_items: { milk_code: [1212, 9898, 1214], vegetables_code: [2222, 75674, 8943, 3452], eggs_code: [4543, 4512, 1754, 9090] } } function find_code( code, object ) { for( const property in object ) if( object[property].includes(code) ) return property; return undefined; } console.log( find_code( 4512, items.store_items ) ); console.log( find_code( 1200, items.store_items ) ); console.log( find_code( 8943, items.store_items ) );
請注意,您正在迭代Object
,而不是Array
。 您可以使用for..of
或for..in
object。 我使用for..in
,因為默認情況下會提取屬性名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.