#javascript #react-native
#javascript #react-native
Вопрос:
Сначала я должен сказать, что я просмотрел сайт здесь, чтобы найти ответ, но не смог.
У меня есть объект, который содержит ключ (имя службы) и значение (счетчик), я хочу извлечь из этого объекта только максимальное и минимальное значение и их ключи.
пример:
Object {
"Learn JavaScript": 3, //Max
"Learn React": 2, //Ignore
"manicure": 1, //Min
}
и затем я хотел бы создать массив объектов, которые будут содержать их в порядке убывания
код, который я использовал для отображения верхнего результата:
const arrayofServices = services; //services => state the holding the services
const servicesCounter = arrayofServices.reduce((counterObj, service) => {
if (counterObj.hasOwnProperty(service)) {
counterObj[service] = 1;
return counterObj;
}
return {
...counterObj,
[service]: 1
};
}, {});
console.log("Service Counter in =>" ,servicesCounter);
есть предложения?
Ответ №1:
Еще одна попытка 🙂
const obj = {"Learn JavaScript": 3, "Learn React": 2, "manicure": 1};
function MinMaxFromObj(obj) {
const min = Math.min(...Object.values(obj));
const max = Math.max(...Object.values(obj));
const minKey = Object.entries(obj).find(([key, value]) =>
value === min ? key : null);
const maxKey = Object.entries(obj).find(([key, value]) =>
value === max ? key : null);
return [Object.fromEntries([minKey]), Object.fromEntries([maxKey])];
}
console.log(MinMaxFromObj(obj));
Комментарии:
1. Мне нужно определить объект? Я получил значения из базы данных
2. если вы получаете данные из базы данных в виде объекта, как описано в вопросе. Вы можете использовать этот объект, передать его функции. Но вам, вероятно, следует проверить, получен объект из базы данных или нет, прежде чем делать это.
3. Я понимаю вас, я сейчас пытаюсь это сделать, и я отвечу как можно скорее
4. Хорошо, это работает, но я не могу понять, как я могу сделать это похожим на объект, который я добавил в журнал
5. о, я исправил возврат функции, теперь она возвращает массив объектов.
Ответ №2:
Вот подход, который может помочь вам решить вашу проблему:
const minMaxEntry = (object) => {
let minKey;
let minValue = Infinity;
let maxKey;
let maxValue = -Infinity;
for (const key in object) {
if (object[key] < minValue) {
minKey = key;
minValue = object[key];
}
if (object[key] > maxValue) {
maxKey = key;
maxValue = object[key];
}
}
const minEntry = { [minKey]: minValue };
const maxEntry = { [maxKey]: maxValue };
return [minEntry, maxEntry];
};
// --- //
const object = {
"Learn JavaScript": 3,
"Learn React": 2,
"manicure": 1,
};
const [minEntry, maxEntry] = minMaxEntry(object);
console.log('Min Entry =>', minEntry);
// { "manicure": 1 }
console.log('Max Entry =>', maxEntry);
// { "Learn JavaScript": 3 }