在JavaScript中拼接字符串索引数组
我有一个字符串索引数组,我想从中删除一个项 考虑以下示例代码:在JavaScript中拼接字符串索引数组,javascript,arrays,Javascript,Arrays,我有一个字符串索引数组,我想从中删除一个项 考虑以下示例代码: 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
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
如何像在第一个示例中一样从第二个示例中删除“一”?一旦数组具有字符串键(或后面没有的数字),它就会成为一个对象 对象没有拼接方法(或与数组不同)。你必须写你自己的,通过制作一个新的对象,并复制到它的关键,你想保留
但是要小心!键的顺序并不总是与它们添加到对象中的顺序相同!这取决于浏览器。正确的方法不是使用数组,而是使用对象:
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
可能是@Daniel的副本-不,它没有,这不是在修改数组。在添加值之后和删除值之前执行arr.length。@Daniel您混淆了对象和数组,然后在数组中区分了delete和splice:不,不混淆。只是不知道它是怎么工作的。但是你发布的链接给出了一个很好的解释。在这个威胁中非常有用。