You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何实现支持任意维度的多维数组元素乘算并设上限的方法

优化实现方案

递归版(通用易维护)

核心思路是判断当前遍历的元素是否为数组:如果是就递归调用函数处理子数组,否则直接执行乘法+上限裁剪逻辑,天然适配任意维度的数组,后续新增维度不需要修改任何代码:

const MultArrFunction = (arr, m, cap) => {
  return arr.map(item => {
    if (Array.isArray(item)) {
      return MultArrFunction(item, m, cap);
    }
    // 直接取乘积和上限的较小值,等效于原逻辑的if判断
    return Math.min(m * item, cap);
  });
};

迭代版(避免递归栈溢出)

如果你的数组维度极高(超过JS引擎的递归栈上限,常规业务场景几乎不会遇到),可以用深度优先遍历的迭代写法实现:

const MultArrFunction = (arr, m, cap) => {
  // 深拷贝原数组避免修改原始数据
  const result = JSON.parse(JSON.stringify(arr));
  const stack = [result];
  while (stack.length) {
    const current = stack.pop();
    for (let i = 0; i < current.length; i++) {
      if (Array.isArray(current[i])) {
        stack.push(current[i]);
      } else {
        current[i] = Math.min(m * current[i], cap);
      }
    }
  }
  return result;
};

内容的提问来源于stack exchange,提问作者Rewind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 16:54:01