Этот вопрос закрыт для ответов, так как повторяет вопрос Как отфильтровать массив объектов и изменить данные в нём?
@Eugene0203

Как при помощи map поменять значения в массиве?

Всем привет!
Нужна помощь
Вот код
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}, 
];
var arr = fruits.filter(obj => obj.type !== "apple");

Помогите пожалуйста, как сделать так, чтобы при помощи map в массиве arr все объекты type: 'pineapple' увеличили price в 2 раза?
Спасибо.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
const res = fruits.map(obj => {
	return (obj.type === "pineapple")
		? {"id": obj.id, "type": obj.type, "price": obj.price * 2}
		: obj;
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@shiza88
Для решения этой задачи тебе нужно написать 2 ф-ции:
1. это ф-ция глубокого копирования.
2. собственно та, которой ты будешь изменять новый массив объектов.

Вот первую задачу ты решай сам, а вторая будет выглядеть как то так:

const result = (arr) => {
  return arr.map((i) => {
    if (i.type === 'pineapple') i.price *= 2; 
    return i;
  });
};


ps: если разрешено использование сторонних либ, поищи глубокое клонирование в lodash.
pss: объедени ф-цию с первого поста с этой и будет результат. Только подумай что в первой нужно модифицировать.
Ответ написан
@vabka
Токсичный
Вы вроде пару дней назад такой вопрос уже задавали.
И там уже был ответ
map не меняет исходный массив, а создают новый.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽