我试图理解为什么在 nodejs 数组 splice 中不适用于关联数组。
var a = [];
a['x1'] = 234234;
a['x2'] = 565464;
console.log("Init-------");
showIt();
a.splice(0, 1);
console.log("After splice-------");
showIt();
delete a['x1'];
console.log("After delete-------");
showIt();
function showIt(){
var keys = Object.keys(a);
var len = keys.length;
var i=0;
while (i < len) {
console.log( ' ' + i + ' ------------ ' + keys[i] );
i++;
}
}
结果:
Init-------
0 ------------ x1
1 ------------ x2
After splice-------
0 ------------ x1
1 ------------ x2
After delete-------
0 ------------ x2
拼接数组什么都不做......
在浏览器中的结果相同...
更新:
当数组定义为:
var a = ['x1','x2','x3'];
console.log("Init-------");
console.log(a);
a.splice('x1', 1);
console.log("After splice-------");
console.log(a);
看起来在第一个示例中,数组被视为在第二个示例中被定义为对象{}
,它被视为更像一个数组。
致版主:
这实际上不是关于备用阵列的问题,它更多的是一个从 0 开始并在几天内连续增长到 1000 万个的阵列的问题。随着它的增长,数组正在被删除,因此一次大约有 1000 个项目在数组中。
我正在考虑通过使用非数字键或定义为对象来强制使用哈希表,{}
以便它像稀疏数组一样工作。
最后,我不确定这是否重要......