Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обход элементов во вложенном ассоциативном массиве (http://www.flasher.ru/forum/showthread.php?t=208036)

skyboy 29.05.2014 13:16

Обход элементов во вложенном ассоциативном массиве
 
Собственно проблема следующая. У меня есть ассоциативный массив.
Код:

customers = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}]}
Я хочу обратится по ключу name к значениям.
Код AS3:

for (var i:int = 0; i < customers.length; i++)
{
    for each (var value:* in customers[i])
    {
        trace("Names", value);
    }
}

В таком случае выводятся все значения и ключа name и ключа email.
Код:

John
john@gmail.com
Andrew
andrew@gmail.com

А нужны только имена, без email.

caseyryan 29.05.2014 13:27

Код AS3:

 trace("Names", value.name);


skyboy 29.05.2014 13:29

Цитата:

Сообщение от caseyryan (Сообщение 1166923)
Код AS3:

 trace("Names", value.name);


UPD: ошибку выдает 1069: Не удалось найти свойство name в String; отсутствует значение по умолчанию.

caseyryan 29.05.2014 13:42

А, значит это не массив, а просто строка. Сначала надо через JSON ее превратить в Object.
Код AS3:

for (var i:int = 0; i < customers.length; i++)
{
    for each (var value:* in customers[i])
    {
        trace("Names", JSON.parse(value).name);
    }
}


skyboy 29.05.2014 13:53

Цитата:

Сообщение от caseyryan (Сообщение 1166925)
А, значит это не массив, а просто строка. Сначала надо через JSON ее превратить в Object.
Код AS3:

for (var i:int = 0; i < customers.length; i++)
{
    for each (var value:* in customers[i])
    {
        trace("Names", JSON.parse(value).name);
    }
}


та же ошибка: Error #1069 Не удалось найти свойство name в Number; отсутствует значение по умолчанию. Действительно я пытаюсь обработать json-файл, внутри которого содержатся те ключи, что я выше описал.

KBAC 29.05.2014 14:04

Код AS3:

for (var i:int = 0; i < customers.length; i++)
{
    trace(customers[i]["name"]);
}


caseyryan 29.05.2014 14:08

Цитата:

Сообщение от skyboy (Сообщение 1166926)
та же ошибка: Error #1069 Не удалось найти свойство name в Number; отсутствует значение по умолчанию. Действительно я пытаюсь обработать json-файл, внутри которого содержатся те ключи, что я выше описал.

что-то я внимания сразу не обратил. Тут же можно так:
Код AS3:

for (var i:String in customers) {
    var obj:Object = JSON.parse(customers[i]);
    trace(obj.name);
}

Но это при условии, что customers это точно массив, а не строка

skyboy 29.05.2014 14:28

Не в том и не в другом случае данные варианты не работает. customers это все таки строка. Я перепутал.

caseyryan 29.05.2014 14:32

Значит обработать надо сначала customers
Код AS3:

var array:Array = JSON.parse(customers);
for (var i:String in array) {
    var obj:Object = array[i];
    trace(obj.name);
}


skyboy 29.05.2014 14:41

В общем я сделал, как вы написали, но ругается на две строчки
Код AS3:

var customers:String = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}]};
var array:Array = JSON.parse(customers);
for (var i:String in array) {
    var obj:Object = array[i];
    trace(obj.name);
}

на первую строчку: Error 1067 Implicit coercion of a value of type Array to an unrelated type String
вторая строчка: Error 1118 Implicit coercion of a value with static type Object to a possibly unrelated type Array


Часовой пояс GMT +4, время: 21:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.