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 相关文章推荐
js判断变量是否空值的代码
Oct 26 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
在多个页面使用同一个HTML片段的代码
Mar 04 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 Javascript
js获取文件里面的所有文件名(实例)
Oct 17 Javascript
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
详解Node 定时器
Feb 26 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 Javascript
如何在Express4.x中愉快地使用async的方法
Nov 18 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使用pdo连接mssql server数据库实例
2014/12/25 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python Socket编程详细介绍
2017/03/23 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python async with和async for的使用
2019/06/20 Python
python flask框架实现重定向功能示例
2019/07/02 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
中层干部岗位职责
2013/12/18 职场文书
人事专员的岗位职责
2014/03/01 职场文书
初三班主任寄语大全
2014/04/04 职场文书
反对邪教标语
2014/06/30 职场文书
课外小组活动总结
2014/08/27 职场文书
婚宴新郎致辞
2015/07/28 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python