我有一个字符串索引数组,我想从中删除一个项目。
请考虑以下示例代码:
var arr = new Array();
arr[0] = "Zero";
arr[1] = "One";
arr[2] = "Two";
arr.splice(1, 1);
for (var index in arr)
document.writeln(arr[index] + " ");
//This will write: Zero Two
var arr = new Array();
arr["Zero"] = "Zero";
arr["One"] = "One";
arr["Two"] = "Two";
arr.splice("One", 1); //This does not work
arr.splice(1, 1); //Neither does this
for (var index in arr)
document.writeln(arr[index] + " ");
//This will write: Zero One Two
如何从第二个示例中删除“One”,就像我在第一个示例中删除的那样?
答案 0 :(得分:20)
执行此操作的正确方法不是使用数组而是使用对象:
var x = {};
x['Zero'] = 'Zero';
x['One'] = 'One';
x['Two'] = 'Two';
console.log(x); // Object Zero=Zero One=One Two=Two
delete x['One'];
console.log(x); // Object Zero=Zero Two=Two
答案 1 :(得分:5)
一旦Array有字符串键(或不遵循的数字),它就会成为一个Object。
对象没有拼接方法(或与Array不同)。你必须自己编写,创建一个新对象并将要保留的密钥复制到其中。
但要小心!这些键的排序方式并不总是与它们在对象中添加的方式相同!这取决于浏览器。