[英]Lint issue with for loop
以下逻辑按预期工作。 我无法更改 lint 规则。
在这种情况下,数据只是一个 Object,如下所示。
const testData = {
item_one: 'item',
};
这是接收上述数据的 function
const convert = (data) => {
for (const key in data) {
// ...
}
return data;
};
为我的 for 循环获取如下 lint 错误,如下所示:
为了解决第一点,尝试将循环切换为 foreach 类型,如下所示并解决了 lint。
但这出于某种原因打破了我的逻辑......由于皮棉而导致逻辑中断有点令人沮丧。
data.forEach((previousKey) => {
// ... same logic as above inside that loop loop
}
对于第 2 点,我确实想遍历每个属性。 我该如何解决这个 lint 错误?
请指教。 谢谢你。
只有 arrays 有forEach
方法; data.forEach
不起作用,因为data
不是数组。 你需要这个
data.forEach((previousKey) => {
成为
Object.keys(data).forEach((previousKey) => {
或者,如果您也想要关联的值
Object.entries(data).forEach(([previousKey, value]) => {
对于第 2 点,我确实想遍历每个属性。
我不认为您也故意要迭代继承的属性。 你真的有内部原型的属性吗,例如
const obj = Object.create({ foo: 'bar' });
obj.someProp = 'someVal';
,并且您想遍历foo
和someProp
?
这听起来很不寻常——可能,但很奇怪。 这就是 linter 警告您不要使用for..in
的原因。 如果您确实需要迭代继承的属性,请禁用这一行的 linter 规则(最好,因为这将使代码最简单),或者(更详细地)使用Object.keys
迭代实例 object 的自身属性Object.keys
,然后对实例的原型执行相同的操作,依此类推,直到到达原型链的末尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.