jquery.each многомерный массив

var array1 = {};

array1['one'] = new Array();
array1['one']['data'] = 'some text';
array1['one']['two'] = new Array();
array1['one']['two']['three'] = new Array();
array1['one']['two']['three']['data'] = 'some other text';

$.each(array1, function(key1, value1){
    $.each(value1['two']['three'], function(key1, value1){
        document.write('test');
    }
});

все работает, кроме того, что оно не попадает в document.write. У кого-нибудь есть идея, почему?

11
задан dazz 24 August 2010 в 14:58
поделиться

3 ответа

Обратите внимание, что замена Array () является здесь ключевой с отсутствующим ')'

var array1 = {};

array1['one'] = new Object();
array1['one']['data'] = 'some text';
array1['one']['two'] = new Object();
array1['one']['two']['three'] = new Object();
array1['one']['two']['three']['data'] = 'some other text';

$.each(array1, function(key1, value1) {
    $.each(value1['two']['three'], function(key1, value1) {
        document.write('test');
    });
});

и другим способом записать то же самое: (небольшая настройка записи для ссылки на ваш объект)

var array1 = {};

array1.one = new Object();
array1.one.data = 'some text';
array1.one.two = new Object();
array1.one.two.three = new Object();
array1.one.two.three.data = 'some other text';


$.each(array1, function(key1, value1) {
    $.each(value1['two']['three'], function(key1, value1) {
        document.write('test' + array1.one.data);
    });
});

И, наконец, с устаревшая замена new Object ():

var array1 = {};

array1['one'] = {}
array1['one']['data'] = 'some text';
array1['one']['two'] = {};
array1['one']['two']['three'] = {};
array1['one']['two']['three']['data'] = 'some other text';

$.each(array1, function(key1, value1) {
    $.each(value1['two']['three'], function(key1, value1) {
        document.write('test');
    });
});

РЕДАКТИРОВАТЬ: немного поразвлечься с вашим массивом, и почему у вас МОГУТ быть строки в объявлении объекта в таком виде:

var array1 = {}; 
var fun="four"; 
array1.one = {}; 
array1.one.data = 'some text'; 
array1.one.two = {}; 
array1.one.two.three = {}; 
array1.one.two.three.data = 'some other text'; 
array1.one.two[fun] = {};
array1.one.two[fun].data=' howdy';

$.each(array1, function(key1, value1) { 
    $.each(value1.two.three, function(key1, value1) { 
        document.write('test'+array1.one.two[fun].data+ ":"+key1+":"+value1); 
    }); 
});

последний вывод: "test howdy: data: какой-то другой текст "

11
ответ дан 3 December 2019 в 08:53
поделиться

Вы пропустите ) во втором каждом .

1
ответ дан 3 December 2019 в 08:53
поделиться

Документ.write не работает, так как у вас есть синтаксическая ошибка, поэтому поток кода никогда не доберется до него - вам нужна еще одна скобка в конце вашего каждого, т.е.

$.each(array1, function(key1, value1){
    $.each(value1['two']['three'], function(key1, value1){
        document.write('test');
    })
});

Если вы собираетесь выполнять какую-либо нетривиальную работу с javascript, я настоятельно рекомендую вам использовать Firefox с установленным Firebug — консоль выделяет такие ошибки, вы верите, что все работает нормально.

1
ответ дан 3 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: