Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться с JS, циклы и условия (https://javascript.ru/forum/misc/81144-pomogite-razobratsya-s-js-cikly-i-usloviya.html)

Tony_Gabrial 08.10.2020 18:30

Помогите разобраться с JS, циклы и условия
 
"data": {
"Contract": {
"19654668": {
"DateIns": "2019-11-20",
"Amount": 53999,
"Dogovor": "54985115555",
"ProgramName": "Стол"
},
"14898668": {
"DateIns": "2020-10-05",
"Amount": 7345,
"Dogovor": "5498511553333",
"ProgramName": "Кресло"
},
"19652368": {
"DateIns": "2020-10-05",
"Amount": 9555,
"Dogovor": "549851155553232",
"ProgramName": "Стол"
},
"7774668": {
"DateIns": "2020-10-25",
"Amount": 9555,
"Dogovor": "549851155551232",
"ProgramName": "Стол и кресло"
}
},
"ref": "200822329841A8C7",
"date_creat": "2020-08-26",
}


Помогите пожалуйста написать скрипт.

Условие:
Если мы находим в каждом объекте data.contract.[key].ProgramName, значение которого равно "Стол" или "Кресло" то сверяем дату "DateIns" с "date_creat":

- Если DateIns >= date_creat, то создавать объект "data.attracted = "Y";
- Если DateIns < date_creat, то создаем обект "data.attracted = "N";

Если полных совпадений в поле ProgramName "Стол" или "Кресло" не найдено, то проставляем "data.attracted = "K"



РЕМАРКА === Необходимо настроить полное совпадение строки, так как, могут попадаться варианты строки как "Стол и кресло" - а нам такие варианты не нужны.

laimas 08.10.2020 20:19

Цитата:

Сообщение от Tony_Gabrial
то создавать объект "data.attracted = "Y";

Это не объект, а свойство объекта data будет. А множество свойств с одним и тем же именем быть не может, то есть, значение этого свойства будет постоянно перезаписываться и примет значение последней проверки. Так что что и где создать?

рони 08.10.2020 20:28

Tony_Gabrial,
<script>
let obj = {"data": {
"Contract": {
"19654668": {
"DateIns": "2019-11-20",
"Amount": 53999,
"Dogovor": "54985115555",
"ProgramName": "Стол"
},
"14898668": {
"DateIns": "2020-10-05",
"Amount": 7345,
"Dogovor": "5498511553333",
"ProgramName": "Кресло"
},
"19652368": {
"DateIns": "2020-10-05",
"Amount": 9555,
"Dogovor": "549851155553232",
"ProgramName": "Стол"
},
"7774668": {
"DateIns": "2020-10-25",
"Amount": 9555,
"Dogovor": "549851155551232",
"ProgramName": "Стол и кресло"
}
},
"ref": "200822329841A8C7",
"date_creat": "2020-08-26",
}};
let date_creat = obj.data.date_creat;
for(let item of Object.values(obj.data.Contract)) {
let attracted = "K";
if(["Стол", "Кресло"].includes(item.ProgramName)) {
attracted = item.DateIns >= date_creat ? "Y" : "N"
}
item.attracted = attracted;
}
document.write(`<pre>${JSON.stringify(obj, "", 4)}</pre>`)
</script>

рони 08.10.2020 20:30

Tony_Gabrial,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Tony_Gabrial 13.10.2020 22:16

Большое всем спасибо


Часовой пояс GMT +3, время: 02:24.