多维数组上的数组映射

Array map on a multidimensional array

我在 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;
    }))));
};

您可以采用递归方法,将闭包传递给因子和最大值。

const
    map = (array, fn) => array.map(v => Array.isArray(v)
        ? map(v, fn)
        : fn(v)
    ),
    fn = (f, max) => v => Math.min(v * f, max);
    
// call
// newArray = map(array, fn(m, cap))