Javascript.RU

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

Corezoid && JS = Трабл с Обектами и массивами
Помогите пожалуйста, необходимо написать код для сравнения данных которые у меня пришли, и затем если успешный поиск, то придать значение атребуту "NumberBaz" = 1 или если нет, то 2.

Мне приходят данные в таком виде:

data: {
"INF_NEW": [
{
"P_CLIENTATTRS": [

{
"FlSendAdv": null,
"ViberFlag": "Y",
"VerifyTrend": "0",
"VerifyCodeAbs": "0",
"VerifyCode": "0",
"St": "A",
"Number": "STANISLAV@BANK.UA",
"Main": "Y",
"GroupMain": "N",
"ContactID": "565465",
"ClientID": "8768678",
},
],
"uaFName": "СТАНІСЛАВ",
"PerMan": "",
"Id": "8768678",
"FlPhys": "Y",
"FlJur": "N"
},
{
"CONT_INF": [
{
"Remark": null,
"FlSendAdv": null,
"ViberFlag": "Y",
"VerifyTrend": "0",
"VerifySource": "UNKNOWN",
"VerifyCodeAbs": "0",
"VerifyCode": "0",
"St": "O",
"Source": "UNKNOWN",
"PushFlag": "Y",
"Number": "+3804354335",
"Main": "N",
"GroupMain": "N",
"ContactID": "10767",
"ClientID": "11486",

}
],
"uaMName": null,
"uaLName": null,
"uaFName": null,
"PerMan": "",
"Id": "11486",
"FlPhys": "Y",
"FlJur": "N"
}
],
"Phone_new": "+3804354335",
"Email": "STANISLAV@BANK.UA",
"Phone_no": 1,



Я пробую вытянуть данные таким образом:

var P_CLIENTATTRS = data.INF_NEW.P_CLIENTATTRS
for (var e in P_CLIENTATTRS) {
if (P_CLIENTATTRS[e].Number == data.Email) // сравниваю на наличие необходимого мне атрибута

{data.NumberBaz = 1}
else {data.NumberBaz = 2}
break;
}
var CONT_INF = data.INF_NEW.CONT_INF
for (var j in CONT_INF) {
if (CONT_INF[j].Number == data.Email)

{data.NumberBaz = 1}
else {data.NumberBaz = 2}

в результате:
"__conveyor_code_return_description__": "[{exception,<<\"ReferenceError: CONT_INF is n
ot defined\">>}]",

И еще по мимо всего прочего перезаписывается P_CLIENTATTRS на CONT_INF...
уже 4й день ищу проблему(( Пожалуйста помогите...
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2015, 08:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Gradu
Я пробую вытянуть данные таким образом:
var P_CLIENTATTRS = data.INF_NEW.P_CLIENTATTRS
data.INF_NEW

Уже массив.

Сообщение от Gradu
Пожалуйста помогите
У тебя пока даже нормального тестового примера нет...
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2015, 19:01
Интересующийся
Отправить личное сообщение для Gradu Посмотреть профиль Найти все сообщения от Gradu
 
Регистрация: 25.05.2015
Сообщений: 11

for (var e in P_CLIENTATTRS) {
if (P_CLIENTATTRS[e].Number == data.Email) // сравниваю на наличие необходимого мне атрибута

я таким образом произвожу поиск елементов в этом массиве, ранее проходил поиск успешно, а именно в этом случае почему-то не отробатывается код и уходит в ошибки. Так-же не понимаю, почему происходит замена P_CLIENTATTRS на CONT_INF...
Ответить с цитированием
  #4 (permalink)  
Старый 13.10.2015, 13:02
Интересующийся
Отправить личное сообщение для Gradu Посмотреть профиль Найти все сообщения от Gradu
 
Регистрация: 25.05.2015
Сообщений: 11

вот решение моей задачи, вдруг кому-то пригодится:

data.flag=2
for (var i in data.INF_NEW) {
for (var j in data.INF_NEW[i])
{
for (var c in data.INF_NEW[i][j])
{
if (data.INF_NEW[i][j][c].Number==data.Email) {
data.test=data.INF_NEW[i][j][c].Number
data.flag=1
alert(data.test);
break;
}
}
}
}
Ответить с цитированием
Ответ



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

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