@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().
  • Вопрос задан
  • 862 просмотра
Решения вопроса 1
vabka
@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;
})
```

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

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

Войти через центр авторизации
Похожие вопросы