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 相关文章推荐
Egret引擎开发指南之视觉编程
Sep 03 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
Javascript基础教程之switch语句
Jan 18 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
如何提高javascript加载速度
Dec 26 Javascript
js中document.write和document.writeln的区别
Mar 11 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
Sep 27 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
详解Vue串联过滤器的使用场景
Apr 30 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 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 强制下载文件代码
2010/10/24 PHP
php 文本文件的读取效率
2012/02/10 PHP
php创建多级目录的方法
2015/03/24 PHP
php PDO异常处理详解
2016/11/20 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Python读取properties配置文件操作示例
2018/03/29 Python
Django如何配置mysql数据库
2018/05/04 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
python GUI计算器的实现
2020/10/09 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
总经理助理岗位职责范本
2014/07/20 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
成本会计实训报告
2014/11/05 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2015年统战工作总结
2015/05/19 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
python解析照片拍摄时间进行图片整理
2022/07/23 Python