@Eugene0203

Как отфильтровать массив объектов и изменить данные в нём?

Есть массив:

const fruits = [ 
  {id: 1, type: 'apple', price: 52}, 
  {id: 2, type: 'apple', price: 76}, 
  {id: 3, type: 'orange', price: 48}, 
  {id: 4, type: 'orange', price: 52}, 
  {id: 5, type: 'apple', price: 32}, 
  {id: 6, type: 'pineapple', price: 52}, 
  {id: 7, type: 'apple', price: 88}, 
  {id: 8, type: 'pineapple', price: 66}, 
  {id: 9, type: 'apple', price: 52}, 
  {id: 10, type: 'pineapple', price: 88}, 
];

Надо убрать все объекты с именем apple, а для pineapple цену умножить на 2.
Решить минимум 2мя способами:
1) Первый способ должен менять данные исходного массива в соответствии с целью.
2) Второй - создавать новый массив, оставляя исходные данные неизменными.
Необходимо один из способов решения построить на функции ES5: или .filter() или .map(), или .reduce().
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@vabka
Токсичный
Лучше подумайте ещё, как можно решить задачу - все подсказки на поверхности.
Вспомните циклы и условия.
Медвежья услуга

Первый вариант - в цикле перебираешь все элементы и через if-ы меняешь.
Второй вариант - то же самое, но через map и filter. Будет что-то типа
const result = fruits
        .map(fruit => fruit.type === "pineapple" 
            ? {...fruit, price: fruit.price * 2}
            : fruit)
        .filter(fruit => fruit.type !== "apple")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jt3k
@jt3k
Фронтендер, люблю работать и получать удовольствия
```
fruits.filter(item => item.type !== 'apple')
.map(item => {
if(item.type === 'pineapple') {
item.price = item.price * 2;
}
return item;
})
```

я не буду делать за вас вашу домашнюю работу!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
Artezio Москва
от 160 000 до 220 000 ₽