Làm cách nào để xóa khóa 'thanh' khỏi một mảng foo để 'thanh' không hiển thị trong
for(key in foo){alert(key);}
Làm cách nào để xóa khóa 'thanh' khỏi một mảng foo để 'thanh' không hiển thị trong
for(key in foo){alert(key);}
Câu trả lời:
Không sử dụng xóa vì nó sẽ không xóa phần tử khỏi một mảng, nó sẽ chỉ đặt nó là không xác định, sau đó sẽ không được phản ánh chính xác theo chiều dài của mảng.
Nếu bạn biết chìa khóa, bạn nên sử dụng splice tức là
myArray.splice(key, 1);
Đối với ai đó ở vị trí của Steven, bạn có thể thử một cái gì đó như thế này:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
hoặc là
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)
thay vì for (key in myArray)
- nếu không key
là biến toàn cục và nếu bạn gọi một hàm bên trong vòng lặp đó có cùng một vấn đề, bạn sẽ nhận được kết quả không mong muốn.
delete foo[key];
: D
eval
. Xóa khóa / chỉ mục của một đối tượng / mảng có thể đạt được bằng các phương pháp đơn giản hơn nhiều không sử dụng eval
.
Một lưu ý quan trọng: Mảng JavaScript không phải là mảng kết hợp như những mảng bạn có thể được sử dụng từ PHP. Nếu "khóa mảng" của bạn là một chuỗi, thì bạn không còn hoạt động trên nội dung của một mảng. Mảng của bạn là một đối tượng và bạn đang sử dụng ký hiệu ngoặc để truy cập thành viên có tên <tên khóa>. Như vậy:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = true; cảnh báo (myArray.length); // trả về 0.
bởi vì bạn chưa thêm các phần tử vào mảng, nên bạn chỉ sửa đổi thanh thành viên của myArray và foo.
Nếu bạn biết tên khóa đơn giản chỉ cần làm như thế này:
delete array['key_name']
Đây là cách tôi sẽ làm
myArray.splice( myArray.indexOf('bar') , 1)
http://www.iNETdoc.info/javascript-feft/remove-key-from-array.htmlm
removeKey(arrayName,key);
function removeKey(arrayName,key)
{
var x;
var tmpArray = new Array();
for(x in arrayName)
{
if(x!=key) { tmpArray[x] = arrayName[x]; }
}
return tmpArray;
}