【发布时间】:2020-03-15 08:07:12
【问题描述】:
只是想分享一个小技巧,我学会了将变量传递到 JS Array.forEach() 方法的范围内。
我遇到过需要使用 forEach 循环来构建数据集的情况。但我也需要访问当前范围内的变量(我需要能够在循环中引用this)。
这是我当时的情况:
var dataset = {
data: [],
backgroundColor:[],
};
items.forEach(function (item) {
dataset.data.push(item.age);
if (item.age < 2) {
dataset.bgColor.push(this.green);
} else if (item.age < 5) {
dataset.bgColor.push(this.yellow);
} else {
dataset.bgColor.push(this.red);
}
}, this);
this.refreshGraph(dataset);
无法从循环内访问数据集。那么我们如何在迭代时访问它呢?
我还没有看到这个堆栈溢出解决方案,它不适合我能找到的任何问题。
回答如下:
【问题讨论】:
-
“无法从循环内访问数据集。”,不确定您的意思,
dataset应该在 forEach 回调中可见,因为它位于更高的作用域,较高作用域的变量对较低作用域的代码可见
标签: javascript arrays json iteration parameter-passing