#javascript
#javascript
Вопрос:
Я пытался выяснить, как это сделать, в течение нескольких часов и idk, почему я так потерян.
Я пытаюсь заменить значение из начинок для каждого пирога в объекте pies на красивые имена из массива toppings .
Я изо всех сил пытаюсь объяснить это без примера (пожалуйста, смотрите Ниже).
т.е. {Взбитые сливки: true} => {«Взбитые сливки»}
const toppings = ["Whipped cream", "Powdered sugar"]
const pies = [
{
name: "Cherry Pie",
toppings:
{
whippedCream: true,
powderedSugar: true
}
},{
name: "Blueberry Pie",
toppings:
{
whippedCream: true,
}
}]
Я был бы очень признателен за любую помощь, которую вы можете предоставить в этом.
Редактировать: начинки = [{имя: «Взбитые сливки»}, {имя: «Сахарная пудра»}]
Комментарии:
1.
{"Whipped cream"}
недопустимый синтаксис — для объектов требуются пары ключ-значение, а не только значения2. Хорошо, допустим, мы создаем toppings = [{name: «Взбитые сливки»}, {name: «Сахарная пудра»}], тогда как бы я это сделал?
Ответ №1:
Вам понадобится объект поиска для перевода ваших начинок в верблюжьем стиле в формат pretty:
const toppingsLookup = {
whippedCream: "Whipped cream",
powderedSugar: "Powdered sugar"
}
Теперь вы действительно можете выполнить поиск. Вы можете сделать это с предоставленным вами массивом следующим образом:
const toppingsLookup = {
whippedCream: "Whipped cream",
powderedSugar: "Powdered sugar"
};
const pies = [{
name: "Cherry Pie",
toppings: { whippedCream: true, powderedSugar: true }
}, {
name: "Blueberry Pie",
toppings: { whippedCream: true }
}];
const formatted = pies.map(pie => {
const toppings = Object.entries(pie.toppings).reduce((acc, [topping, hasTopping]) => {
if (hasTopping) {
acc.push(toppingsLookup[topping]);
}
return acc;
}, [])
return {...pie, toppings};
})
console.log(formatted);
Ответ №2:
РЕДАКТИРОВАТЬ: Теперь, когда вопрос был отредактирован для уточнения, этот код преобразует исходный объект pies в формат, в котором свойство toppings каждого пирога представляет собой массив объектов со свойствами name:
pies.forEach((pie) => {
const toppingsBool = pie.toppings;
pie.toppings = [];
if (toppingsBool.whippedCream) {
pie.toppings.push({name: toppings[0]});
}
if (toppingsBool.powderedSugar) {
pie.toppings.push({name: toppings[1]});
}
})