gpt4 book ai didi

javascript - for循环的lint问题

转载 作者:行者123 更新时间:2023-12-04 08:09:12 25 4
gpt4 key购买 nike

以下逻辑按预期工作。我无法更改 lint 规则。
数据 在这种情况下,它只是一个传入的对象,如下所示。

const testData = {
item_one: 'item',
};
这是接收上述数据的函数
const convert = (data) => {
for (const key in data) {
// ...
}
return data;
};
为我的 for 循环获取如下 lint 错误,如下所示:
  • for..in 循环遍历整个原型(prototype)链,这几乎不是您想要的。使用 Object.{keys,values,entries},并遍历结果数组
  • for-in 的主体应该包含在 if 语句中,以过滤原型(prototype)中不需要的属性

  • 为了解决第一点,尝试将循环切换为 foreach 类型,如下所示并解决了 lint。
    但这出于某种原因打破了我的逻辑......由于 Lint 而打破逻辑有点令人沮丧。
    data.forEach((previousKey) => {
    // ... same logic as above inside that loop loop
    }
    对于第 2 点,我确实想遍历每个属性。我该如何解决这个 lint 错误?
    请指教。谢谢你。

    最佳答案

    只有数组有 forEach 方法; data.forEach 不起作用,因为 data 不是数组。你需要这个

    data.forEach((previousKey) => {
    成为
    Object.keys(data).forEach((previousKey) => {
    或者,如果您也想要关联的值
    Object.entries(data).forEach(([previousKey, value]) => {

    For point 2, I do want to iterate over every property.


    我不认为您也故意要迭代继承的属性。你真的有内部原型(prototype)的属性吗,例如
    const obj = Object.create({ foo: 'bar' });
    obj.someProp = 'someVal';
    ,并且您想遍历 foosomeProp
    这听起来很不寻常——可能,但很奇怪。这就是 linter 警告您不要使用 for..in 的原因。如果您确实需要迭代继承的属性,请禁用这一行的 linter 规则(最好,因为这会使代码最简单),或者(更详细地)使用 Object.keys 迭代实例对象的自身属性,然后对实例的原型(prototype)执行相同的操作,依此类推,直到到达原型(prototype)链的末尾。

    关于javascript - for循环的lint问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66067810/

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