一个简单的js面试题
在js群里看到有人发问,于是抱着练手的心态写了答了几个面试题,题目虽然不是太难,却很考验人的编程思维。汗颜,看了别人的答案后才发现自己好像笨了很多。 废话不说了 ,上代码。
1 要求 给一个数组的最后一个元素加1 结果大于10则给前一个元素加1 并设置当前元素值=0;前一个元素亦是如此,例如
var a=new Array(3,9);
a[1]+1;
a=[3,9];
此题看似很简单,只要最后一个元素等于10 就给钱一个元素加1,设置当前元素为0就是了,但还有一种特殊一点的情况,就是当数组的所有元素都为9时,还要在向数组内添加一个元素。我给出的答案如下:
$(function () {
add();
})
function add() {
var a = [,];
var b = a;
var sum ;
b[b.length - ]=( b[b.length - ] )+ ;
if (b[b.length - ] >=) {
b[b.length - ] = b[b.length - ] - ;
var i = b.length - ;
while (i> -) {
if (i != -) {
sum = b[i] + ;
if (sum >=) {
b[i] = sum - ;
} else {
b[i] = sum;
break;
}
i--;
} else {
a = [];
a.push(b);
i--;
}
}
} else {
a = b;
}
alert(a);
}
看了别人写的代码,才发现自己吧问题复杂化了,写了一堆代码,如果使用js的unshift()函数会更好,向数组头部添加一个或多个元素并返回新的数字长度。汗,自己js了解的少也不知道有这么个方法。但这样写本质还是一样的,个人觉得最正确的写法应该是这样:
//转换整数后计算在转为数组
$.(function() {
var num = [,,,,],
intA = parseInt(num.join("")); intA++;
var newStr = intA.toString(),
newArr = [];
for(var i=,l=newStr.length;i<l;i++) {
newArr.push(parseInt(newStr[i]));
}
alert(newArr);
});
这个问题本来就是一个用数组模拟十进制加法的事,所以转换成数字来计算是最直接简单的。同时也发现一个问题,自己和别人的差距咋就这么大捏?
还有一个查找一个字符串中“每”个字符出现的次数的,例如'assddfsds'中a s d f 分别出现了几次,当时写了下但没有保存,在这里就不说了 有兴趣的可以自己去看下,注意,只限js语法;
一个简单的js面试题的更多相关文章
- 一个简单的JS倒计时
看到很多商城都是抢购倒计时的功能,今天闲来无事做了个倒计时.全当学习JS. 主要思路:主要用到Date对象,声明一个变量获取当前时间,在声明一个变量获取结束时间,结束时间-当前时间=剩余时间(倒计时) ...
- 一个简单的 js 时间对象创建
JS中获取时间很常见,凑凑热闹,也获取一个时间对象试试 首先,先了解js的获取时间函数如下: var myDate = new Date(); //创建一个时间对象 myDate.g ...
- Chart.js: 一个简单的 JS Chart Library
Chart.js 是一个 Open Source 的 JavaScript Chart Library.它一共有 6 中 Chart,全都是 HTML5 based. 底下是 Chart.js 所提供 ...
- 一个简单的JS日期挂历脚本
分享一个JS脚本做的日期挂历,在需要的时候可以引入你的程序. 如需单独引入这个脚本,请将它保存在一个文件中然后引入它:如这样 <script type="text/javascript ...
- 一个简单的js实现倒计时函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- isMobile 一个简单的JS库,用来检测移动设备
点这里 github地址:https://github.com/kaimallea/isMobile Example Usage I include the minified version of t ...
- 一个简单的js队列,逻辑很清晰
function Queue(type) { //type 是否是一个接着一个执行 function QueueConst() {} QueueConst.execute_ing=[], QueueC ...
- 一个简单的js时钟
演示地址 代码 <html> <head> <title> Nonove js clock 时钟 </title> <script type=&q ...
- 一个简单的js计数器(web储存)。
<span id="countspan"></span> <a href="#" onclick="countNumbe ...
随机推荐
- eslint推荐编码规范和airbnb推荐编码规范
Eslint规范 for 循环禁止使用无限循环(这个非默认推荐) // bad for (var i = 0; i < 10; i--) { } for (var i = 10; i >= ...
- Apache2.2 启动和停止命令
1.启动:net start apache2.2 2.停止:net stop apache2.2
- 在Android 上运行 openCV ,并做灰度变化的一个例子
OpenCVImageProcessing1. 导入Opencv的 androrid SDK灰度算法 OpenCVImageProcessing 导入opencv Jar包,配置OpenCVLibra ...
- USACO 4.1 Fence Rails
Fence RailsBurch, Kolstad, and Schrijvers Farmer John is trying to erect a fence around part of his ...
- [luogu1090 SCOI2003] 字符串折叠(区间DP+hash)
传送门 Solution 区间DP,枚举断点,对于一个区间,枚举折叠长度,用hash暴力判断是否能折叠即可 Code #include <cstdio> #include <cstr ...
- .net 单元测试
都说测试驱动开发,但是想写好单元测试其实不容易,不是因为测试用例难以构造,而是因为很多时候方法非常复杂 其中部分测试想要完成就十分费力,其中让人崩溃的地方主要如下: 实例私有函数 实例静态私有函数 十 ...
- 执行计划中Using filesort,Using temporary相关语句的优化解决
昨天听开发人员提到,相关的彩票网页当中一个页面刷新的很慢,特别是在提取数据的时候,今天早上一到,便去找开发人员要去相关的也没进行浏览,窥探哪些数据出现了问题,开发人员使用PHP开发,所以我用IE很容易 ...
- 1009MySQL数据库InnoDB存储引擎Log漫游
00 – Undo Log Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atom ...
- 用户命令行方式连MYSQL数据库
现在是手工入门,就不太依赖IDE,使用MYSQL的JDBC的JAR包连数据库的方式如下: 演示文件内容: package cc.openhome; import java.sql.*; public ...
- HTML【2】表单提交与服务层的模拟(具体解释get与post提交方式的不同)
在HTML[1]中已经说明了HTML编程的基本方式,最后说到了表单提交的方式有get和post方式.那么究竟什么是get/post 方式呢,两者有什么差别?如今我就详细的介绍一下. 首先回想一下表单的 ...