Eslint refactor for in
title: 重构你的for...in循环以避免ESLint警告 shortTitle: 重构for...in循环以避免ESLint警告 type: 提示 language: javascript tags: [数组,迭代器,eslint] cover: typing excerpt: ESLint是一个非常有用的工具,但有时它会妨碍工作,因为它更喜欢我以某种方式编写代码。我见过的警告之一是以下内容:
for..in循环遍历整个原型链,这几乎永远不是你想要的。使用Object.{keys,values,entries},并遍历结果数组。eslint(no-restricted-syntax)
以下是三种重构选项:
Object.keys()
Object.keys()
的行为与for...in
循环完全相同,因此可以将其用作替代:
const data = [3, 4];
// 与 for (let k in data) console.log(k) 相同
Object.keys(data).forEach(k => console.log(k));
// 0 1
Object.values()
Object.values()
与Object.keys()
非常相似,但返回的是值而不是键,这可能是你真正使用键的目的:
const data = [3, 4];
// 遍历值
Object.values(data).forEach(v => console.log(v));
// 3 4
Object.entries()
最后,如果你需要同时获取键和值,Object.entries()
可以满足你的需求:
const data = [3, 4];
// 遍历数据,返回键值对
Object.entries(data).forEach(e => console.log(e[0], e[1]));
// [0, 3] [1, 4]