为什么输出的是NaN

老梁啊 2018-12-20 12:50:30
var arr7 = [10, 0,20,0,30]; var mon7 = []; for (var i = 0; i < arr7.length; i++) { if (arr7[i] != 0) { mon7[mon7.length] += arr7[i]; } } console.log(mon7)
...全文
1002 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2018-12-20
  • 打赏
  • 举报
回复
var arr7 = [10, 0,20,0,30]; var mon7 = arr7.filter(v => v!=0); console.log(mon7);
winzond 2018-12-20
  • 打赏
  • 举报
回复
var arr7 = [10, 0,20,0,30];
var mon7 = [];
for (var i = 0; i < arr7.length; i++) {
if (arr7[i] != 0) {
mon7[mon7.length] = arr7[i]; //修改这一句
}
}
console.log(mon7)

你是想过滤arr7里的0,把非零数据装进新数组吗?那就是这样干了。
老梁啊 2018-12-20
  • 打赏
  • 举报
回复
引用 1 楼 讨厌走开啦 的回复:
mon7是空数组,所以mon7[mon7.length]这样取值肯定是undefined,undefined与任何数字进行运算以后结果都是NaN,因为运算表达式非法。
怎么输出数字
老梁啊 2018-12-20
  • 打赏
  • 举报
回复
引用 1 楼 讨厌走开啦的回复:
mon7是空数组,所以mon7[mon7.length]这样取值肯定是undefined,undefined与任何数字进行运算以后结果都是NaN,因为运算表达式非法。
嗯,谢谢
老马历写记 2018-12-20
  • 打赏
  • 举报
回复
1楼说的对!!!
输出:[ NaN, NaN, NaN ]
补充:mon7.length,第一次0,所以mon7[0]赋值,第二次length=1,所以mon7[1]赋值, 第三次length=2, 所以mon7[2]赋值
讨厌走开啦 2018-12-20
  • 打赏
  • 举报
回复
mon7是空数组,所以mon7[mon7.length]这样取值肯定是undefined,undefined与任何数字进行运算以后结果都是NaN,因为运算表达式非法。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧