在node.js中执行类似的操作是否可以:
Object.keys(obj).forEach(function(index) {
if (index == 'sth')
obj.splice(obj.indexOf(index), 1);
}
我想知道如果脚本是由许多写入/写入obj对象的客户端执行的,那么这个拼接是否会完成预期的事情。
答案 0 :(得分:2)
obj确实是一个对象,索引可以是一个字母数字值。因此,splice不能在对象中工作,而应该使用delete。同样的问题,是否可以在对象的foreach中使用delete?
您forEach
上没有obj
。 (你不能,forEach
仅为类似数组的东西定义。)你通过查找{{1}的所有可枚举属性创建的数组forEach
通过obj
。
让我们看一下上面描述的更改并修正语法错误的代码:
Object.keys
当然,您可以从Object.keys(obj).forEach(function(key) {
if (key == 'sth')
delete obj[key];
});
中删除数组obj
回调中的forEach
内的属性。它对您正在循环的阵列完全没有影响。
旁注:在对象上使用Object.keys
时,在V8(JavaScript引擎NodeJS使用)和其他一些对象上,它会显着降低以后查找该对象属性的性能,因为它来自优化版本为"词典模式"版。当然,这只有在您将对象识别为性能问题的根源时才有意义;在那之前,删除...: - )