2012-10-09 30 views
5

thể trùng lặp:
how to fetch array keys with jQuery?php function array_keys tương đương trong jquery

php tích hợp chức năng array_keys(), tương đương trong jquery có bất kỳ xây dựng trong chức năng trong jquery tương tự như của php array_keys(),.

xin đề nghị

+1

Kiểm tra điều này: http://stackoverflow.com/questions/1254227/how-to-fetch-array-keys-with-jquery – Josh

+1

Btw: Mảng trong Javascript chỉ có thể có các phím số, không có thứ gì như một mảng kết hợp. Nó chỉ có thể được mô phỏng bởi một đối tượng ([nhưng có sai sót] (http://blog.kevinchisholm.com/javascript/associative-arrays-in-javascript/)) –

Trả lời

4

Bạn sẽ phải xác định chức năng của riêng bạn để có được những chức năng tương tự. Hãy thử điều này:

function arrayKeys(input) { 
    var output = new Array(); 
    var counter = 0; 
    for (i in input) { 
     output[counter++] = i; 
    } 
    return output; 
} 

arrayKeys({"one":1, "two":2, "three":3}); // returns ["one","two","three"] 
1

Hãy xem PHPJS, một dự án nhằm tái sản xuất nhiều chức năng PHP trong vanilla JavaScript với phụ thuộc tối thiểu. Trong trường hợp của bạn, bạn muốn array_keys.

3

Không có gì cụ thể trong jQuery cho việc này. Có một phương pháp javascript nhưng nó không được hỗ trợ rộng rãi chưa Object.keys() để mọi người không sử dụng nó cho các dự án chung chung. Điều tốt nhất tôi có thể nghĩ đến là

var keys = $.map(your_object, function(value, key) { 
    return key; 
}); 
+0

Đây là câu trả lời hay nhất, nhưng 'Object.keys () 'được hỗ trợ rộng rãi hiện nay, bao gồm IE9 + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys – sMyles

3

Bạn không cần jQuery hoặc bất kỳ thư viện nào khác cho điều này - đó là một phần tiêu chuẩn của Javascript.

for(var key in myObject) { 
    alert(key); 
} 

Điều đó là đủ để bạn lặp qua đối tượng. Nhưng nếu bạn muốn thực sự nhận được các phím vào mảng riêng của họ (tức là biến nó thành một bản sao chính hãng của hàm php), sau đó nó khá tầm thường để kéo dài tuổi trên:

function array_keys(myObject) { 
    output = []; 
    for(var key in myObject) { 
     output.push(key); 
    } 
    return output; 
} 

Lưu ý, có nhiều tiền đề với việc sử dụng kỹ thuật for(..in..) cho các đối tượng có các thuộc tính hoặc các phương thức mà bạn không muốn bao gồm (ví dụ các thuộc tính hệ thống cốt lõi), nhưng đối với một đối tượng đơn giản mà bạn đã tạo ra hoặc từ một chuỗi JSON, nó lý tưởng.

(Để biết thêm về những hãy cẩn thận, xem http://yuiblog.com/blog/2006/09/26/for-in-intrigue/)

1

Trong JavaScript không có những thứ như mảng kết hợp. Đối tượng (đối tượng literals) xử lý các trường hợp tương tự.

var keys = [], i = 0;  
for(keys[ i++ ] in yourObject); 

Và bây giờ keys chứa tất cả yourObject tên thuộc tính (khóa).

Các vấn đề liên quan