【发布时间】:2021-08-20 17:40:04
【问题描述】:
我在 JavaScript 中有一个 5 维多维数组。我需要将每个值乘以m,但将其上限为cap。目前它是一个 5 维数组,但如果我在后期改进程序的功能,我可能需要添加另一个维度。所以如果可能的话,我想在未来证明我的MultArrFunction。
有没有更好的方法来做到这一点?这看起来很乱。
const MultArrFunction = (arr, m, cap) => {
return arr.map(v => v.map(v2 => v2.map(v3 => v3.map(v4 => {
let ret;
if((ret = m * v4) > cap) ret = cap;
return ret;
}))));
};
【问题讨论】:
-
请显示您的输入结构和预期输出。您可以使用递归来使用
Array.isArray(arr)向下钻取值——如果是,则递归其元素,如果不是,则对标量执行操作。if((ret = m * v4) > cap) ret = cap;应该写成return Math.min(cap, m * v4) -
客观地说,“更好”是什么意思?显然有人猜到了“更好”的含义并得到了复选标记,但对于未来的回答者和寻找其他东西而不是你对更好的看法的人,请解释一下。
-
正如问题中所解释的,更好 = 不凌乱。正如问题中所解释的,更好 = 面向未来,独立于数组的维度。一般来说,更好的是编写更好的代码。我的代码很乱。 Nina 的答案是流畅、编写良好的代码,在函数式编程中使用了良好的基本思想。 Nina 的代码是我所向往的。
-
...和@ggorlen 的评论说的答案完全相同。也感谢 ggorlen。
标签: javascript multidimensional-array array-map