我正在尝试为基于Ajax的Web应用程序建立键/值关系。我决定使用基于纯数组的方法,因为迭代数组比objs快(或者有人告诉我)。
这个想法的基础是这样的:
var keyVals = [
[ "key1", ["value1"] ],
[ "key2", ["value2"] ],
];
但是,当我迭代数组以删除/设置或更改键时,该事件未按预期运行:
例如:
console.log(keyVals);
function delKeyPair(key) {
for (var i = 0; i < keyVals.length; i++) {
if (keyVals[i][0] && keyVals[i][0] === key) {
Array.prototype.splice.call(keyVals, i, 1);
return true
}
}
return false
};
delKeyPair("key1");
console.log(keyVals);
当我第一次使用console.log()数组时,它表明在调用函数之前“ key1已被删除。
这是一个小提琴,不太确定发生了什么。任何帮助深表感谢。
http://jsfiddle.net/3pfj8927/
最佳答案
key1
尚未在调用函数之前被删除:
尝试console.log(keyVals.length);
DEMO
输出:
Length before deleting: 2
Length after deleting: 1