以下代码期望this.triggeredTests的所有属性都是数组,并计算其总长度:
let savedLen = 0;
const values = Object.values(this.triggeredTests);
for (let i = 0; i < values.length; i += 1) {
savedLen += values[i].length;
}
如果我尝试使用 for ... in 中的代码重写此代码:
for (const val in values) {
savedLen += val.length;
}
我遇到了一些烦人的错误:
✘ http://eslint.org/docs/rules/guard-for-in The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype
src\components\entity\Test.vue:171:9
for (const val in values) {
^
✘ http://eslint.org/docs/rules/no-restricted-syntax 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
src\components\entity\Test.vue:171:9
for (const val in values) {
^
✘ 2 problems (2 errors, 0 warnings)
Errors:
1 http://eslint.org/docs/rules/no-restricted-syntax
1 http://eslint.org/docs/rules/guard-for-in
是否可以使此用于...在中工作?
我确定我使用的是什么编译器,但至少我知道我正在NPM的Node.js v8.12.0环境中工作。
EDIT1:
如果我将用于...的:
for (const val of values) {
savedLen += val.length;
}
我遇到另一个错误:
✘ http://eslint.org/docs/rules/no-restricted-syntax iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations
src\components\entity\Test.vue:171:9
for (const val of values) {
^
EDIT2:
这不会产生错误:
const values = Object.values(this.triggeredTests);
const sumCalculator = (accumulator, currentValue) => accumulator + currentValue.length;
const savedLen = values.reduce(sumCalculator, 0);
答案 0 :(得分:1)
我相信您将python与语法混淆,node正在使用for-of枚举可迭代对象的值
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
答案 1 :(得分:1)
您的错误确实是由于eslint而不是javascript中的for循环造成的。您可以将所拥有的内容粘贴到chrome开发工具中,并且无需编译就可以正常工作。
特别是这些棉绒
这两种方法都可以防止与对象相关的for循环中出现奇数,因为它将遍历所有元素。
在这种情况下,如果这是一个基本数组,我建议使用
values.forEach(iterator)
答案 2 :(得分:1)
在这里,我不会将错误描述为烦人-它试图保护您免受不必要的影响。使用以下示例代码:
Array.prototype.someFunc = function () { }
const someObject = { a: 'A', b: 'B', c: 'C' };
const someObjectValues = Object.values(someObject);
for (const v in someObjectValues) {
console.log(v);
}
这里至少有两个问题:
v
将是元素的 index :您将获得{{1},而不是A
,B
和C
}},0
和1
。2
,这显然不是故意的。这里最简单的解决方案是记下掉毛错误,并保持原样。
答案 3 :(得分:1)
您正在遍历数组。您正在寻找SELECT TO_TIMESTAMP_TZ(
updateDate
'DY MON DD HH24:MI:SS TZHTZM YYYY',
'NLS_DATE_LANGUAGE=ENGLISH'
) AT TIME ZONE '-05:00' as fechaCol
from irregularities
循环。
如果您想使用for...of
,请尝试
for...in
也可以在这里查看有关两个循环https://bitsofco.de/for-in-vs-for-of/
的一些好信息