如题,今天遇到一组存放于数组中的字符串形式的“数字”,并且要将数组里面所有的数字进行求和。当时第一反应就是通过for()循环对每个元素进行累加,但是最后得到的结果却是NaN。
为什么会是NaN呢?
可能是忘记转换格式了,好,我们parseInt()一下。
还是不行。。。。。
看来需要找找大神们是怎么做的了。
在经过一番搜索之后找到了原因所在,原来还是漏掉了一些情况。
说白了就是,看到了和大神之间巨大的差距。
废话少说,上代码。
<script type="text/javascript">
function arraySum(arr) {
var sum = 0;
if (Object.prototype.toString.call(arr) === '[object Array]') {
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === "number" && !isNaN(arr[i])) {
sum += arr[i];
} else {
var tmp = parseInt(arr[i]);
if ((typeof tmp === "number") && !isNaN(tmp)) {
sum += tmp;
} else {
throw new Error("存在不能转换成Number的数据");
}
}
}
}
return sum;
}
var arr = "1,2,3,4,8,6,7,8,9,10".split(",");
//arr =[1,2,3,4,5,6,7,8,9,10];
var sum = arraySum(arr);
console.log(sum);
</script>