4 回答

TA貢獻1828條經驗 獲得超4個贊
在此:
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)

TA貢獻1802條經驗 獲得超5個贊
用途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));

TA貢獻1895條經驗 獲得超3個贊
您可以編寫一個小函數來為您完成此操作。該函數在第一次找到代碼時進行匹配。
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 ) );
請注意,您正在迭代 an?Object
,而不是Array
.?for..of
您可以使用或迭代對象for..in
。我使用了for..in
,因為它默認提取屬性名稱。

TA貢獻1807條經驗 獲得超9個贊
您需要迭代 的鍵/值對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))
添加回答
舉報