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

JavaScript中使用map方法执行除法操作为何返回NaN?

解密函数返回NaN的原因及修复

问题根源

你遇到的NaN问题,核心是加密阶段把数组意外嵌套成了二维数组,导致解密时运算对象错误:

  • 加密函数中,code1.map(x => x*mult)得到的是正常一维数组(比如[2,4,6,8]),但你随后执行code1 = []; code1.push(map1),把一维数组塞进了空数组,让code1变成了嵌套数组(比如[[2,4,6,8]])。
  • 解密函数接收这个嵌套数组后,调用code1.map(item => item/mult)时,item是整个内层一维数组,数组和数字做除法运算会直接返回NaN。

修复方案

方案一:加密时不嵌套数组(推荐)

直接将map后的一维数组传递给解密函数,不要做嵌套操作:

const num1 = [1, 2, 3, 4];
const num2 = [4, 3, 2, 1];

const codeScript = (code1, code2, mult) => {
  const encrypted1 = code1.map(x => x * mult);
  const encrypted2 = code2.map(x => x * mult);
  console.log('加密后num1:', encrypted1);
  console.log('加密后num2:', encrypted2);
  descrypter(encrypted1, encrypted2, mult);
};

const descrypter = (code1, code2, mult) => {
  const decrypted1 = code1.map(item => item / mult);
  const decrypted2 = code2.map(item => item / mult);
  console.log('解密后num1:', decrypted1);
  console.log('解密后num2:', decrypted2);
};

codeScript(num1, num2, 2);

方案二:适配嵌套数组(不推荐,没必要的复杂度)

如果一定要保留加密阶段的嵌套逻辑,解密时先取出内层数组再处理:

descrypter = (code1, code2, mult) => {
  // 取出嵌套数组中的内层一维数组
  const map3 = code1[0].map(item => item / mult);
  console.log('解密后num1:', map3);
  const map4 = code2[0].map(item => item / mult);
  console.log('解密后num2:', map4);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:56:01