ฉันจะลบคีย์ 'bar' ออกจาก array foo เพื่อให้ 'bar' ไม่ปรากฏขึ้นได้อย่างไร
for(key in foo){alert(key);}
ฉันจะลบคีย์ 'bar' ออกจาก array foo เพื่อให้ 'bar' ไม่ปรากฏขึ้นได้อย่างไร
for(key in foo){alert(key);}
คำตอบ:
อย่าใช้การลบเนื่องจากมันจะไม่ลบองค์ประกอบออกจากอาเรย์เท่านั้นมันจะตั้งค่าเป็นไม่ได้กำหนดเท่านั้นซึ่งจะไม่ถูกสะท้อนอย่างถูกต้องในความยาวของอาเรย์
หากคุณรู้ว่ากุญแจคุณควรใช้ประกบกันเช่น
myArray.splice(key, 1);
สำหรับคนที่อยู่ในตำแหน่งของสตีเวนคุณสามารถลองสิ่งนี้:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
หรือ
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)
แทนfor (key in myArray)
- มิฉะนั้นkey
จะเป็นตัวแปรโกลบอลและถ้าคุณเรียกใช้ฟังก์ชันภายในลูปนั้นที่มีปัญหาเดียวกันคุณจะได้ผลลัพธ์ที่ไม่คาดคิด
delete foo[key];
: D
eval
ใช้ การลบคีย์ / ดัชนีของวัตถุ / eval
อาร์เรย์สามารถทำได้โดยวิธีการที่ง่ายมากไม่ได้ใช้
หมายเหตุสำคัญ: อาร์เรย์ JavaScript ไม่ใช่อาร์เรย์เชื่อมโยงเหมือนกับที่คุณคุ้นเคยจาก PHP หาก "คีย์อาร์เรย์" ของคุณเป็นสตริงแสดงว่าคุณไม่ได้ใช้งานเนื้อหาของอาร์เรย์อีกต่อไป อาร์เรย์ของคุณเป็นวัตถุและคุณใช้เครื่องหมายวงเล็บเพื่อเข้าถึงสมาชิกชื่อ <key name> ดังนั้น:
var myArray = []; myArray ["bar"] = จริง; myArray ["foo"] = จริง; การแจ้งเตือน (myArray.length); // คืนค่า 0
เนื่องจากคุณยังไม่ได้เพิ่มองค์ประกอบลงในอาร์เรย์คุณจึงปรับเปลี่ยนเฉพาะแถบและสมาชิก foo ของ myArray
หากคุณรู้ชื่อกุญแจก็ทำได้ดังนี้
delete array['key_name']
นี่คือวิธีที่ฉันจะทำมัน
myArray.splice( myArray.indexOf('bar') , 1)
http://www.internetdoc.info/javascript-function/remove-key-from-array.htm
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;
}