2010-02-04 23 views

Trả lời

16
var foo = myarray[myarray.length - 1]; 

Thuật ngữ ưa thích là yếu tố, chứ không phải là chìa khóa.

CHỈNH SỬA: Hay bạn có nghĩa là chỉ mục cuối cùng? Đó là myarray.length - 1. Hãy nhớ, các mảng JavaScript chỉ có thể được lập chỉ mục bằng số (mặc dù mảng cũng là các đối tượng, gây ra một số nhầm lẫn).

+0

Nó có thể là sai lầm, bạn nên có một cái nhìn tại bưu đó. – user198729

+0

Điều gì "có thể sai"? –

+4

@ user198729 Mảng trong JavaScript hoạt động khác với PHP. PHP thực hiện chúng dưới dạng mảng thưa thớt, đó là lý do tại sao chỉ mục của phần tử đầu tiên/cuối không phải lúc nào cũng là 0/len-1. Trong JavaScript tất cả các mảng là các mảng dày đặc, không có cơ sở, các phần tử chỉ mục được điền đầy đủ (có thể không xác định) từ 0 đến .length-1. – nicerobot

2

Mấu chốt cuối cùng của một mảng luôn arr.length-1 là như mảng luôn bắt đầu với phím 0:

var arr = new Array(3); // arr === [], arr.length === 3 
arr.push(0);    // arr === [undefined, undefined, undefined, 0], arr.length === 4 
arr[arr.length-1]  // returns 0 

var arr = [];   // arr === [], arr.length === 0 
arr[3] = 0;    // arr === [undefined, undefined, undefined, 0], arr.length === 4 
arr[arr.length-1]  // returns 0 
4

Nếu đó là một phẳng mảng, điều này sẽ làm:

return array.length - 1; 

Tuy nhiên, nếu bạn có một mảng kết hợp , bạn phải biết khóa và lặp lại thông tin đó. Xin lưu ý rằng mặc dù JavaScript không biết điều gì như là một "mảng kết hợp", vì hầu hết các phần tử trong JavaScript là các đối tượng.

Tuyên bố từ chối trách nhiệm: Việc sử dụng mảng kết hợp trong JavaScript là generally not a good practice và có thể dẫn đến sự cố.

var x = new Array(); 
x['key'] = "value"; 
for (i in x) 
{ 
    if (i == 'key') 
    { 
     alert ("we got "+i); 
    } 
} 
+1

Tại sao lại sử dụng 'Mảng'? Bạn không sử dụng mảng của nó (tức là thuộc tính 'length' ma thuật) nên bạn cũng có thể sử dụng' Object'. Ngoài ra, đặc tả JavaScript không đảm bảo về thứ tự của các phím khi sử dụng vòng lặp 'cho ... trong', vì vậy không có điều nào là" khóa cuối cùng " –

+0

Trong ví dụ đầu tiên, tôi đã sử dụng thuộc tính độ dài. Vì thuộc tính này không có sẵn trên các mảng kết hợp, tôi đã thêm ví dụ thứ hai, trong đó rõ ràng minh họa một trường hợp sử dụng của một "khóa cuối được mô phỏng".Vì OP sẽ biết tên của khóa cuối cùng, nên có thể lấy phần tử thực tế bằng phương thức trên. –

+0

Re. thuộc tính chiều dài, tôi đã đề cập đến ví dụ thứ hai, không phải là ví dụ đầu tiên. –

2

trước hết xin lỗi vì tiếng Anh kém. giả sử mảng của bạn là "mảng được liên kết chính" với các phím chuỗi ở định dạng số. bạn sẽ cần 3 bước: nhận tất cả các phím mảng. chuyển đổi các khóa mảng thành số nguyên. nhận được tối đa hoặc độ dài hoặc bất kỳ thuộc tính khóa nào khác.

stringKeys= Object.keys(keyValueArray);//get keys of array 
integerKeys=stringKeys.map(Number);//convert to integer 
mx=Math.max.apply(integerKeys);//get max 
len=stringKeys.length;//get length 

hy vọng tôi đã giúp

+0

sau đó trả lời câu hỏi ban đầu của khóa cuối cùng trong mảng kết hợp mà tôi phải làm: stringKeys [len-1] hoặc nếu bạn muốn một số nguyên integerKeys [len-1]. –

0
Math.max(...[...myArray.keys()]); 

Đây myArray là tên của một mảng.

Đây là giải pháp dựa trên câu hỏi được giới thiệu của bạn. Giả sử mảng là một mảng một chiều hoặc tất cả các khóa mảng là số.

Reads: Math.max, Array.prototype.keys(), Iterators and generators

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