2012-06-07 42 views
5

Hi i hiện đang lấy một mảng với .eachNhận chìa khóa của mảng kết hợp

$.each(messages, function(key,message){ doStuff(); }); 

Nhưng quan trọng là chỉ số của mảng và không phải là chìa khóa kết hợp.

Làm cách nào để tôi có thể dễ dàng?

Cảm ơn

+5

Mảng không có bất kỳ khóa liên kết nào. Chỉ mục là chìa khóa. Bạn đang cố làm gì vậy? – Guffa

+2

Bạn đang ở đâu Mảng tức là 'thư'? post rằng – thecodeparadox

+1

Bạn có thể vui lòng cung cấp một mảng ví dụ (2-3 phần tử) và "khóa kết hợp" mà bạn mong đợi không? –

Trả lời

9
var data = { 
    val1 : 'text1', 
    val2 : 'text2', 
    val3 : 'text3' 
}; 
$.each(data, function(key, value) { 
    alert("The key is '" + key + "' and the value is '" + value + "'"); 
}); 
​ 

Xem Demo

+0

Cảm ơn, tôi sẽ sử dụng một mảng để có được công việc này bạn đã đúng –

0

JavaScript không có "mảng kết hợp" như trong PHP, nhưng các đối tượng. Các đối tượng, mặc dù, có thể có các phím chuỗi tương ứng với một giá trị. Mảng là danh sách các giá trị được lập chỉ mục số, vì vậy, nếu key là một số, nó phải là mảng bạn đang làm việc và không phải là đối tượng và do đó bạn không thể lấy khóa, vì không có khóa.

Vì vậy, bạn có thể muốn lặp qua một mảng với một vòng lặp đơn giản for thay vì trình lặp dựa trên cuộc gọi lại như $.each.

19

JavaScript không có "mảng kết hợp". Nó có các mảng:

[1, 2, 3, 4, 5] 

và các đối tượng:

{a: 1, b: 2, c: 3, d: 4, e: 5} 

Array Avatar của không có "chìa khóa", họ có chỉ số, được tính bắt đầu từ 0.

Mảng được truy cập sử dụng [] và các đối tượng có thể được truy cập bằng cách sử dụng [] hoặc ..

Ví dụ:

var array = [1,2,3]; 
array[1] = 4; 
console.log(array); // [1,4,3] 

var obj = {}; 
obj.test = 16; 
obj['123'] = 24; 
console.log(obj); // {test: 16, 123: 24} 

Nếu bạn cố gắng truy cập vào một mảng sử dụng một chuỗi như một chìa khóa thay vì một int, mà có thể gây ra vấn đề. Bạn sẽ thiết lập một thuộc tính của mảng và không phải là một giá trị.

var array = [1,2,3]; 
array['test'] = 4; // this doesn't set a value in the array 
console.log(array); // [1,2,3] 
console.log(array.test); // 4 

jQuery's $.each hoạt động với cả hai loại này. Trong gọi lại cho $.each, thông số 1, key, là khóa của đối tượng hoặc chỉ mục của mảng.

$.each([1, 2, 3, 4, 5], function(key, value){ 
    console.log(key); // logs 0 1 2 3 4 
}); 

$.each({a: 1, b: 2, c: 3, d: 4, e: 5}, function(key, value){ 
    console.log(key); // logs 'a' 'b' 'c' 'd' 'e' 
}); 
Các vấn đề liên quan