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,超强推荐expand.js
Dec 23 Javascript
javascript编程起步(第七课)
Feb 27 Javascript
Prototype String对象 学习
Jul 19 Javascript
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
Dec 14 Javascript
JavaScript中动态向表格添加数据
Jan 24 Javascript
js原生方法被覆盖,从新赋值原生的方法
Jan 02 Javascript
vue使用vue-i18n实现国际化的实现代码
Apr 08 Javascript
vue里面使用mui的弹出日期选择插件实例
Sep 16 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php自定文件保存session的方法
2014/12/10 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
js实现无缝滚动图
2017/02/22 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Python3使用requests发闪存的方法
2016/05/11 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
python3中eval函数用法使用简介
2019/08/02 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
自荐信的两点禁忌
2013/10/30 职场文书
先进个人获奖感言
2014/01/24 职场文书
给校长的建议书300字
2014/05/16 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
营业员岗位职责
2015/02/11 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Java基础之this关键字的使用
2021/06/30 Java/Android