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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
jquery1.4 教程二 ajax方法的改进
Feb 25 Javascript
关于IE BUG与字符串截取substr的解决办法
Apr 10 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
详解jQuery中的事件
Dec 14 Javascript
使用grunt合并压缩js和css文件的方法
Mar 02 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
详解javascript中的Error对象
Apr 25 Javascript
通过循环优化 JavaScript 程序
Jun 24 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
推荐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中动态HTML的输出技术
2006/10/09 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
python中使用序列的方法
2015/08/03 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python时间日期操作方法实例小结
2020/02/06 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
怎样创建、运行java程序
2014/08/01 面试题
机械专业应届生求职信
2013/09/21 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
职务聘任书范文
2014/03/29 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
校园广播稿100字
2014/10/06 职场文书
避暑山庄导游词
2015/02/04 职场文书
《山中访友》教学反思
2016/02/24 职场文书
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android