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 相关文章推荐
JQuery.Ajax之错误调试帮助信息介绍
Jul 04 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
jquery与prototype框架的详细对比
Nov 21 Javascript
javacript使用break内层跳出外层循环分析
Jan 12 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
js实现textarea限制输入字数
Feb 13 Javascript
Angular 2.x学习教程之结构指令详解
May 25 Javascript
浅谈Express异步进化史
Sep 09 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
用原生 JS 实现 innerHTML 功能实例详解
Apr 03 Javascript
Angular脚手架开发的实现步骤
Apr 09 Javascript
JavaScript实现京东快递单号查询
Nov 30 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安装为Apache DSO
2006/10/09 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
react同构实践之实现自己的同构模板
2019/03/13 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
python处理html转义字符的方法详解
2016/07/01 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
市场营销专业推荐信
2013/11/03 职场文书
网络书店创业计划书
2014/02/07 职场文书
民事上诉状范文
2015/05/22 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript