多维数组上的数组映射
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))
我在 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))