JavaScript 大数据相加的问题


Posted in Javascript onAugust 03, 2011

同样是一道面试题,来自有道前端的面试。
写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据。实现语言不限。
我是用js实现的,说一下我自己的思路:
1、首先这个题目最重要的环节在考虑怎么存储大数据?用什么数据类型保存呢?最简单可行的方式是String
2、确定了使用何种类型保存数据之后这个题目就明朗了。首先判断两个传入字符串的长度,取最短的len循环,两者从低位开始对应位相加,同时注意保存进位。在短的数据处理完后,将进位交给较长串的剩余部分处理。
详细实现看一下代码,完整实例见jsfiddle

var strAdd = function(srcA, srcB) { 
var i, temp, tempA, tempB, len, lenA, lenB, carry = 0; 
var res = [], 
arrA = [], 
arrB = [], 
cloneArr = []; 
arrA = srcA.split(''); 
arrB = srcB.split(''); 
arrA.reverse(); 
arrB.reverse(); 
lenA = arrA.length; 
lenB = arrB.length; 
len = lenA > lenB ? lenB : lenA; 
for (i = 0; i < len; i++) { 
tempA = parseInt(arrA[i], 10); 
tempB = parseInt(arrB[i], 10); 
temp = tempA + tempB + carry; 
if (temp > 9) { 
res.push(temp - 10); 
carry = 1; 
} else { 
res.push(temp); 
carry = 0; 
} 
} 
cloneArr = lenA > lenB ? arrA : arrB; 
for (; i < cloneArr.length; i++) { 
tempA = parseInt(cloneArr[i], 10); 
temp = tempA + carry; 
if (temp > 9) { 
res.push(temp - 10); 
carry = 1; 
} else { 
res.push(temp); 
carry = 0; 
} 
} 
return (res.reverse()).join(''); 
};

以上。
PS:其实吧,这个面试题被我改编了下,原始的面试题主考官提示了用字符串保存大数据的,这个其实降低难度了~~
Javascript 相关文章推荐
javascript显示选择目录对话框的代码
Nov 10 Javascript
Javascript 日期对象Date扩展方法
May 30 Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
JQuery for与each性能比较分析
May 14 Javascript
javascript作用域和闭包使用详解
Apr 25 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
vue如何判断dom的class
Apr 26 Javascript
详解vue中组件参数
Jul 09 Javascript
一步一步实现Vue的响应式(对象观测)
Sep 02 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 #Javascript
JS 控制小数位数的实现代码
Aug 02 #Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 #Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
Aug 02 #Javascript
基于jquery实现漂亮的动态信息提示效果
Aug 02 #Javascript
基于jQuery替换table中的内容并显示进度条的代码
Aug 02 #Javascript
jQuery动态添加的元素绑定事件处理函数代码
Aug 02 #Javascript
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php设置编码格式的方法
2013/03/05 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
jquery密码强度校验
2015/12/02 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
js倒计时显示实例
2016/12/11 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
django的csrf实现过程详解
2019/07/26 Python
python实现画循环圆
2019/11/23 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
linux系统都有哪些运行级别
2012/04/15 面试题
九年级科学教学反思
2014/01/29 职场文书
公司请假条范文
2014/04/11 职场文书
2014年教师工作总结
2014/11/10 职场文书
公务员年度考核评语
2014/12/31 职场文书