gpt4 book ai didi

javascript - 如何避免 for...in eslint 问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:23 25 4
gpt4 key购买 nike

我有一个包含一些键和值的对象。

我最初有这个循环:

  for(const key in commands) {
if (commands.hasOwnProperty(key)) {
const value = commands[key];
// Do something else
}
}

这给了我以下 eslint 错误:

for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array. (no-restricted-syntax)

所以我改成了这样:

  Object.keys(commands).forEach(key => {
if (commands.hasOwnProperty(key)) {
const value = commands[key];
}
});

现在,由于 hasOwnProperty,我收到以下错误:

Do not access Object.prototype method 'hasOwnProperty' from target object. (no-prototype-builtins)

我如何编写一个简单的循环来迭代键,同时避免 eslint 错误?

最佳答案

使用Object.keys时,不需要勾选hasOwnProperty。 Object.keys 生成一组独有的属性。这就是第一个 eslint 错误建议您使用它的原因。

对于第二个 lint 错误,建议您这样做

Object.prototype.hasOwnProperty.call(commands, key)

存在此 lint 规则的原因是,如果命令是使用 Object.create(null)< 创建的,则 commands.hasOwnProperty 可能是 undefined/。不过,就您而言,您只需要删除支票:

Object.keys(commands).forEach(key => {
const value = commands[key];
// Do something else
});

关于javascript - 如何避免 for...in eslint 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085538/

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