2010-08-24 42 views
9
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'); 
    } 
}); 

mọi thứ đều hoạt động, ngoại trừ nó không đến được document.write. Bất kỳ ai cũng có ý tưởng tại sao?jquery.each mảng đa chiều

+1

Đó là * * không ** Mảng bạn đang sử dụng ở đó, nhưng đối tượng bình thường. Không sử dụng 'new Array()' nhưng 'new Object()' (hoặc chỉ '{}' cho một đối tượng "trống rỗng"). – RoToRa

Trả lời

8

Lưu ý rằng Array() thay thế là chìa khóa ở đây với các thiếu ')'

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'); 
    }); 
}); 

và Một cách khác để viết những điều tương tự: (Tweek nhỏ trên ghi vào tham khảo đối tượng của bạn)

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); 
    }); 
}); 

Và cuối cùng, với sự phản đối new Object() thay thế:

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'); 
    }); 
}); 

EDIT: một số wit vui vẻ h mảng của bạn, và tại sao bạn có thể có các chuỗi trong các tuyên bố đối tượng như bạn có nó:

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); 
    }); 
}); 

đầu ra các người cuối cùng là: "kiểm tra howdy: dữ liệu: một số văn bản khác"

+1

Vâng, nó không thực sự là một mảng, nhưng vui vẻ anyway :) wit h đối tượng array1 của bạn! –

+0

Bạn đang có quá nhiều niềm vui với điều này. :) –

+1

Tôi chống lại việc đăng thêm các cách "vui vẻ" để khai báo bộ đối tượng này :) –

1

Các document.write không hoạt động khi bạn đã là một lỗi cú pháp, vì vậy các dòng mã không bao giờ để nó - bạn cần khung khác vào cuối each của bạn, ví dụ:

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

Nếu bạn Tôi sẽ khuyên bạn nên sử dụng Firefox với cài đặt Firebug - giao diện điều khiển sẽ làm nổi bật những loại lỗi này nếu không bạn sẽ không nhận ra, khiến bạn tin rằng mọi thứ đều hoạt động tốt .

+1

Có trên nền tảng, hoặc trình duyệt khác, nhưng ít nhất là nắm bắt chi tiết lỗi Chi tiết lỗi trang web như tôi đã làm bằng cách nhấp vào ký hiệu lỗi trong cửa sổ IE bằng cách nhấp đúp vào thanh trạng thái: Tác nhân người dùng: Mozilla/4.0 (tương thích; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MDDR; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) Dấu thời gian: Thứ Ba, ngày 24 tháng 8 năm 2010 15:28:09 UTC Thông báo: Dự kiến ​​')' –

+1

vẫn không chạm vào document.write như bạn thấy ở đây: jsfiddle .net/yPYWd –

1

Bạn bỏ lỡ ) trong giây thứ hai each.

+1

mà vẫn không nhấn document.write như bạn thấy ở đây: http://jsfiddle.net/yPYWd/ –