for循环的皮棉问题

卡维

以下逻辑按预期工作。我没有办法改变皮棉规则。在这种情况下,
数据只是一个传入的对象(例如follows)。

const testData = {
  item_one: 'item',
};

这是吸收以上数据的功能

const convert = (data) => {
  for (const key in data) {
      // ...
  }
  return data;
};

对于我的for循环,如下获取lint错误如下:

  1. for..in循环遍历整个原型链,而这实际上并不是您想要的。使用Object。{keys,values,entries},并遍历结果数组
  2. for-in的主体应包裹在if语句中,以过滤原型中不需要的属性

要解决第一个问题,请尝试按以下方式将循环切换为foreach类型,这样就可以解决掉毛问题。
但这由于某种原因破坏了我的逻辑...由于皮棉导致逻辑崩溃有点令人沮丧。

data.forEach((previousKey) => {
    // ... same logic as above inside that loop loop
}

对于第二点,我确实想遍历每个属性。我该如何解决此皮棉错误?

请指教。谢谢。

一定的表现

只有数组才有forEach方法。data.forEach由于data不是数组因此无法使用。你需要这个

data.forEach((previousKey) => {

成为

Object.keys(data).forEach((previousKey) => {

或者,如果您也想要关联的值

Object.entries(data).forEach(([previousKey, value]) => {

对于第二点,我确实想遍历每个属性。

我不认为您也有意遍历继承的属性。您是否确实对内部原型具有属性,例如

const obj = Object.create({ foo: 'bar' });
obj.someProp = 'someVal';

,并且您想遍历两个foosomeProp

这听起来很不寻常-可能,但很奇怪。这就是为什么linter警告您不要使用for..in如果你了与实例对象的自己的属性需要遍历继承属性,要么禁用这一行的棉短绒规则(最好的,因为会让代码最简单的),或(更冗长)迭代Object.keys,然后对实例的原型进行相同的操作,依此类推,直到到达原型链的末尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章