Чей id хотим найти:
const color = 'orange';
.
Ищем:
const { id = null } = Object.values(fruits).find(n => n.color === color) || {};
// или
let id = null;
for (const k in fruits) {
if (fruits.hasOwnProperty(k) && fruits[k].color === color) {
id = fruits[k].id;
break;
}
}
UPD. Вынесено из комментариев:
А если у меня несколько оранжевых фруктов, как поступить?
Ну, доставайте всё, что есть.
Сразу достаём массив id для какого-то конкретного цвета:
const ids = Object.values(fruits).reduce((acc, n) => (
n.color === color && acc.push(n.id),
acc
), []);
Или, сначала группируем данные, а затем можно извлекать массивы id для различных цветов:
function group(data, key, val = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const getVal = val instanceof Function ? val : n => n[val];
const result = {};
for (const n of data) {
const k = getKey(n);
(result[k] = result[k] || []).push(getVal(n));
}
return result;
}
const idsByColor = group(Object.values(fruits), 'color', 'id');
const orangeIds = idsByColor.orange || [];
const greenIds = idsByColor.green || [];