Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2021, 14:45
Интересующийся
Отправить личное сообщение для DenZen Посмотреть профиль Найти все сообщения от DenZen
 
Регистрация: 29.05.2021
Сообщений: 11

Как подменить свойство объекта в цикле for
Нужна помощь! Перебираю циклом for массив с объектами примерно такой:
[{"product": "name1", "price": "10"}, {"product": "name2", "price": "20"}, {"product": "name3", "price": "30"}]


В некоторых случаях в объекте может не быть одного свойства, при этом я могу понять это по имени, например

[{"product": "name1", "price": "10"}, {"product": "Free"}, {"product": "name3", "price": "30"}]


Как можно в цикле, если "product": "Free" создать свойство "price": "0"?
Просто начинают свойства смещаться, получается product[1] = "Free", price[1] = "30" (из третьего объекта, т.к во втором нет цены), а product[2] = "30" и price[2] = undefined;
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2021, 15:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

DenZen,
<script>
let ar = [{"product": "name1", "price": "10"}, {"product": "Free"}, {"product": "name3", "price": "30"}]
ar.forEach(e => {
    if(e.product === "Free") e.price = "0";
});

document.write(JSON.stringify(ar))
    </script>
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2021, 15:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от DenZen
В некоторых случаях в объекте может не быть одного свойства, при этом я могу понять это по имени, например
[{"product": "name1", "price": "10"}, {"product": "Free"}, {"product": "name3", "price": "30"}]

Как можно в цикле, если "product": "Free" создать свойство "price": "0"?
Как вариант...
const arr = [
	{"product": "name1", "price": "10"}, 
	{"product": "Free"}, 
	{"product": "name3", "price": "30"}
]
arr.forEach(el => alert(el.product + ' - ' + (el?.price ?? 0)))
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2021, 18:37
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,576

el?.price ?? 0
первый вопросик бессмысленный. Еся там не будет el - оно свалится ещё на el.product.)
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 22.08.2021, 20:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Aetae
Еся там не будет el - оно свалится ещё на el.product.)
Странный вопрос... el точно есть и, по условиям задачи, есть и el.product.
Вопрос был только
Сообщение от DenZen
Как можно в цикле, если "product": "Free" создать свойство "price": "0"?
И мой пример именно по этому вопросу.
Ответить с цитированием
  #6 (permalink)  
Старый 22.08.2021, 20:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,576

ksa,
В выражении
alert(el.product + ' - ' + (el?.price ?? 0)))
нет смысла использовать "?."
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно обращаться к свойствам объект внутри самого объекта ? mitiya Общие вопросы Javascript 12 25.04.2015 21:18
Как получить свойсвто объекта? Armen Общие вопросы Javascript 4 19.10.2014 06:45
Как в цикле for переходить к следующей итерации после завершения предыдущей? FRIE jQuery 5 30.07.2014 19:03
Как обратиться к переменной внутри объекта, в произвольной функцию через его метод platedz Элементы интерфейса 15 25.08.2012 00:03
Не могу получить свойство объекта FINoM Общие вопросы Javascript 4 04.12.2011 04:46