gpt4 book ai didi

javascript - 如何迭代关联数组并以 JSLint 方式删除一些元素(JavaScript,node.js 4.2.3)

转载 作者:搜寻专家 更新时间:2023-10-31 23:53:18 25 4
gpt4 key购买 nike

我写的代码:

for (var game in this.currentGames) {
if (this.currentGames[game].gameState === consts.GS_GAME_DELETE) {
delete this.currentGames[game];
}
}

它工作正常,但 JSLint.net 向我显示警告:

JSLint:意外的“var”。

当我尝试修复它时:

var game;
for (game in this.currentGames) {
if (this.currentGames[game].gameState === consts.GS_GAME_DELETE) {
delete this.currentGames[game];
}
}

我收到这样的警告:JSLint:预期为“Object.keys”,但看到的是“for in”。

我尝试修复并编写了下一个代码:

Object.keys(this.currentGames).forEach(function (item, i, arr) {
if (arr[i].gameState === consts.GS_GAME_DELETE) {
delete arr[i];
}
});

它只是行不通,因为 arr 是数组(不是关联数组)。

当我尝试:

Object.keys(this.currentGames).forEach(function (item) {
if (this.currentGames[item].gameState === consts.GS_GAME_DELETE) {
delete this.currentGames[item];
}
});

我遇到运行时错误:

if (this.currentGames[item].gameState === consts.GS_GAME_DELETE) {
^

类型错误:无法读取未定义的属性“currentGames”

我使用 Microsoft Visual Studio 2012 和 JSLint.NET。

所以,我的问题是:在循环中从关联数组中删除元素的正确方法在哪里?或者有什么方法可以关闭 JSLint?

最佳答案

for (var game in this.currentGames) {
if (this.currentGames.hasOwnProperty(game)
&& this.currentGames[game].gameState === consts.GS_GAME_DELETE
) {
delete this.currentGames[game];
}
}

您还可以通过在匿名函数作用域(具有自己的 this 上下文)之外定义一些具有 this 值的变量来使用您的最后一个变体:

var self = this;
Object.keys(this.currentGames).forEach(function (item) {
if (self.currentGames[item].gameState === consts.GS_GAME_DELETE) {
delete self.currentGames[item];
}
});

关于javascript - 如何迭代关联数组并以 JSLint 方式删除一些元素(JavaScript,node.js 4.2.3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com