【发布时间】:2019-02-14 00:48:04
【问题描述】:
我目前正在处理Eloquent JavaScript tutorial - 识别文本。
我很难理解 for / of 循环中条件的 else 子句的对象分配发生在哪里。我看到的唯一分配是 findIndex 返回 -1,但是当我运行代码时,它还会为所有返回 true 的值创建一个对象。它怎么可能有一个名称值,它在哪里被分配?
function countBy(array, groupName) {
let counts = [];
for (let item of array) {
let name = groupName(item);
let known = counts.findIndex(count => count.name == name);
if (known == -1) {
counts.push({ name, count: 1 });
} else {
counts[known].count++;
}
}
return counts;
}
console.log(countBy([1, 2, 3, 4, 5], n => n > 2));
// → [{name: false, count: 2}, {name: true, count: 3}]
【问题讨论】:
-
我的错。该数组已扩展为包含真值
-
name 来自 counts.push({ name, count: 1 });这与 counts.push({ name: name, count: 1 }); 相同
-
我了解破坏部分
标签: javascript