Javascript:在数组对象中将特定元素属性设置为false

Javascript:在数组对象中将特定元素属性设置为false,javascript,arrays,object,Javascript,Arrays,Object,我使用以下代码重置已删除的标志: for( var prefix in $42.words ) { var words = $42.words[prefix]; // words is an array of objects for( var j=0 ; j<words.length ; j++ ) $42.words[prefix][j].deleted = false; } for(变量前缀为$42.0个字){ var words=$42.words[前缀];//w

我使用以下代码重置已删除的标志:

for( var prefix in $42.words ) {
    var words = $42.words[prefix];  // words is an array of objects
    for( var j=0 ; j<words.length ; j++ ) $42.words[prefix][j].deleted = false;
}
for(变量前缀为$42.0个字){
var words=$42.words[前缀];//words是一个对象数组
对于(var j=0;j类似于:

给定一些存根数据。如果我有一个您的数据示例,那将是最好的:

var $42 = {};
$42.words = [{isOn:true, deleted:true},{isOn:true, deleted:true},{isOn:true, deleted:true}];

$42['words'].forEach(function(obj,i){
    obj.deleted = false;
});

这要快一点,因为只有一个查找
words.length
,而没有查找
$42。内部循环中的单词[前缀]

for( var prefix in $42.words ) {
    var words = $42.words[prefix];
    for( var j = words.length - 1; j >= 0; j-- ) words[j].deleted = false;
}

在第一次迭代中,您将尝试设置
单词[words.length]。已删除
,但
单词[words.length]
将是未定义的,因此它将抛出。还请注意,一些浏览器已优化为向前迭代数组,因此向后迭代可能会更慢。@Oriol谢谢,当然是-1,还有一个拼写错误0/=也已修复。还感谢提供有关浏览器的信息。我在这里学习。