javascript - JS | 通过嵌套的“for of”循环递归
问题描述
在学习 NodeJS 时,我一直在努力为这个代码块(见下文)编写一个更简洁的逻辑,它可以引入递归或利用ES6 方法来提供更优雅和更好的可读性。
我对发生在for of loops
想法?
export function pleaseRefactorMe(measures, metrics, stats) {
if (!Array.isArray(metrics)) metrics = [metrics] //=> returns array [ 'temperature' ]
if (!Array.isArray(stats)) stats = [stats] //> returns array [ 'min', 'max', 'average' ]
let statistics = []
/**** refactor opportunity for nested for of loops ****/
for (let metric of metrics) {
for (let stat of stats) {
try {
let value = calculateStatsForMetric(stat, metric, measure)
if (value) {
statistics.push({
metric: metric,
stat: stat,
value: value
})
}
} catch (err) {
return err
}
}
}
return statistics
}
解决方案
一个简单的方法是使用forEach
-
let statistics = [];
metrics.forEach(m => {
stats.forEach(s => {
let value = calculateStatsForMetric(s, m, measures);
if (value) {
statistics.push({
metric: m,
stat: s,
value: value
});
}
});
});
推荐阅读
- tensorflow - 如何修剪 tensorflow 层中的最高权重?tfmot.sparsity.keras.prune_low_magnitude
- css - 为什么我的 CSS 选择器没有选择正确的元素?
- javascript - 我正在尝试使用 Particle js 在本网站的主要英雄部分显示粒子,但它不起作用
- javascript - React 将组件作为参数传递给函数
- php - PHP 如何从 DOMDocument 读取 XML 编码
- java - Apache POI:使用 Java 写入 excel:打开 Workbook,java.io.IOException:无法写入数据,文档似乎已经关闭
- c - sysmalloc 断言在 c 中失败
- spring - 如何从 Spring 控制器重定向到 React 页面
- codeigniter - 如何使用数组数据集从mysql数据库中获取数据
- java - 使用 jpa 存储库动态分片