Javascript无法返回变量

阿拉什·霍怀达

我有一个数组数组,其中的对象如下所示:

var data = [
[{'name':'John', 'value':2},
{'name':'Randy', 'value':4}
],

[{'name':'Sarah', 'value':10},
{'name':'Julie', 'value':10}
]
];

我想遍历每个数组并将values相加并将总数存储在一个数组中。我想出的东西是这样的:

function add(accumulator, a) {
    return accumulator + a;
}

var totals = [];

var yExtent = data.forEach(function(item) {
  item.forEach(function(jtem) {
    var subTotals = [];
    subTotals.push(jtem.value);
    return subTotals;
  })
  var localTotal = subTotals.reduce(add,0);
  totals.push(localTotal);
  return totals;
});

console.log(totals)

但是,这会导致错误:“未定义 subTotals”

问题

发生这种情况是因为subTotals与函数的其他部分不在同一范围内吗?如果是这样,我应该如何进行?我不能放入var localTotal = subTotals.reduce(add,0);范围,因为forEach()它会过于频繁地计算它并给我错误的值。我应该如何修改此代码以将我的内部forEach()计算返回到外部?

肖恩·维埃拉

forEach是为了副作用。您确实想使用转换函数而不是副作用来编写转换。首先,它会更短。其次,它会更清晰——你不想要副作用,你想要一个纯粹的转换,你的代码将反映这一点。使用相同的代码,但map结果如下:

var totals = data.map(item => {
  var localTotal = item.map(datum => datum.value).reduce(add, 0);
  return localTotal;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript 无法访问多值返回语句中的变量

来自分类Dev

无法使用返回的变量

来自分类Dev

从Javascript函数返回变量

来自分类Dev

从Javascript函数返回变量

来自分类Dev

从函数javascript返回变量

来自分类Dev

尝试返回无法解析为变量的变量

来自分类Dev

无法覆盖JavaScript变量

来自分类Dev

Javascript对象不返回变量

来自分类Dev

返回Javascript变量的AJAX调用

来自分类Dev

javascript:从点击函数返回变量

来自分类Dev

无法将返回的数据从$ .get传递到JavaScript中的变量或数组

来自分类Dev

无法在node.js中返回变量

来自分类Dev

返回方法无法解析为变量

来自分类Dev

无法返回/获取对函数内部变量的访问

来自分类Dev

无法在node.js中返回变量

来自分类Dev

无法在 ac 函数中返回正确的变量

来自分类Dev

JavaScript无法识别php变量

来自分类Dev

JavaScript IF语句无法识别变量

来自分类Dev

无法更新变量onkeyup javascript

来自分类Dev

使用表格返回变量无法产生返回值

来自分类Dev

从侦听器函数Javascript返回变量

来自分类Dev

返回前使用变量填充JavaScript数组

来自分类Dev

在Python / Flask中返回javascript变量

来自分类Dev

设置javascript变量以返回函数的值

来自分类Dev

如何从javascript函数返回变量以及promise?

来自分类Dev

始终返回函数值的Javascript变量

来自分类Dev

Javascript变量范围返回未定义

来自分类Dev

将javascript函数返回存储在变量中

来自分类Dev

从JavaScript对象返回多个变量的正确方法