này cũng tương tự như câu hỏi này, chỉ PHP-> javascriptLàm cách nào để lấy khóa cuối cùng trong mảng trong javascript?
How to get numeric key of new pushed item in PHP?
này cũng tương tự như câu hỏi này, chỉ PHP-> javascriptLàm cách nào để lấy khóa cuối cùng trong mảng trong javascript?
How to get numeric key of new pushed item in PHP?
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).
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
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);
}
}
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 " –
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. –
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. –
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
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]. –
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
Nó có thể là sai lầm, bạn nên có một cái nhìn tại bưu đó. – user198729
Điều gì "có thể sai"? –
@ 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