一个简单的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 = [9,4];
            var b = a;
            var sum ;
            b[b.length - 1]=( b[b.length - 1] )+ 8;
            if (b[b.length - 1] >=10) {
                b[b.length - 1] = b[b.length - 1] - 10;
                var i = b.length - 2;
                while (i> -2) {
                    if (i != -1) {
                        sum = b[i] + 1;
                        if (sum >=10) {
                            b[i] = sum - 10;
                        } else {
                            b[i] = sum;
                            break;
                        }
                        i--;
                    } else {
                        a = [1];
                        a.push(b);
                        i--;
                    }
                }
            } else {
                a = b;
            }
            alert(a);
        }

看了别人写的代码,才发现自己吧问题复杂化了,写了一堆代码,如果使用js的unshift()函数会更好,向数组头部添加一个或多个元素并返回新的数字长度。汗,自己js了解的少也不知道有这么个方法。但这样写本质还是一样的,个人觉得最正确的写法应该是这样:

//转换整数后计算在转为数组
$.(function() {
 var num = [9,9,9,9,9],
  intA = parseInt(num.join(""));

 intA++;
 var newStr = intA.toString(),
  newArr = [];
 for(var i=0,l=newStr.length;i<l;i++) {
  newArr.push(parseInt(newStr[i]));
 }
 alert(newArr);
});

这个问题本来就是一个用数组模拟十进制加法的事,所以转换成数字来计算是最直接简单的。同时也发现一个问题,自己和别人的差距咋就这么大捏?

还有一个查找一个字符串中“”个字符出现的次数的,例如‘assddfsds‘中a s d f 分别出现了几次,当时写了下但没有保存,在这里就不说了 有兴趣的可以自己去看下,注意,只限js语法;

一个简单的js面试题

时间: 2025-01-14 08:57:30

一个简单的js面试题的相关文章

编写一个简单的js模板替换工具 rtt----replace templete tool

最近一段时间在修改自己的个人在线简历.  这个在线简历用到了css3来制作3D的旋转效果, 因此会有兼容性问题, 针对于不支持css3的3D透视的浏览器, 比如 IE,  360等等, 我使用的是另一套css文件兼容.  针对于移动端浏览器, 尽管基本都是webkit内核, 但经测试发现3D效果并不流畅, 因此移动端是识别userAgent切换到另一套非3D页面.  因为没用任何数据库, 那么问题就来了, 移动端和pc端两套页面是共用的一套数据, 我想到的方法有两个: 一是页面加载之后用ajax

一个简单css+js的开关组件

一个简单的开关组件 依赖:jquery.js CSS .choose-btn { display: none; } .choose-label { box-shadow: #b1b1b1 0px 0px 0px 1px; width: 30px; height: 16px; display: inline-block; border-radius: 16px; position: relative; background-color: #bdbdbd; overflow: hidden; mar

Chart.js: 一个简单的 JS Chart Library

Chart.js 是一个 Open Source 的 JavaScript Chart Library.它一共有 6 中 Chart,全都是 HTML5 based. 底下是 Chart.js 所提供的 6 中 Charts的实例图形,包括了折线图.柱形图.圆饼图等,这样很容易在html网页中实现动态图的效果: Line Chart Bar Chart Radar Chart Pie Chart Polar Area Chart Doughnut Chart 快速上手 你可以到 github下载

一个简单的js实现倒计时函数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <met

isMobile 一个简单的JS库,用来检测移动设备

github地址: https://github.com/kaimallea/isMobile 示例 (function () { var MOBILE_SITE = 'http://m.xx.com/index.html', NO_REDIRECT = 'noredirect'; if (isMobile.any) { if ( document.cookie.indexOf(NO_REDIRECT) === -1 ) { document.location = MOBILE_SITE; }

一个简单的js队列,逻辑很清晰

function Queue(type) { //type 是否是一个接着一个执行 function QueueConst() {} QueueConst.execute_ing=[], QueueConst.execute_no=[], QueueConst.state=1, QueueConst.type = type?type:false QueueConst.prototype.stop=function () {//暂停 QueueConst.state=2 } QueueConst.

一个简单的JS函数,用于判断文本是否数字

/****************************************************** 判断是否是数字(整数,小数均可,不包括负数)* 2014年10月10日22:38:19*****************************************************/function isNumber(str){    var re = /^([0-9]+)([.]?)([0-9]*)$/;      return re.test(str);} 该函数脱胎于

一个简单的js计数器(web储存)。

1 <span id="countspan"></span> 2 <a href="#" onclick="countNumber();">点击</a> 3 <script type="text/javascript"> 4 if(!localStorage.countAll){ 5 localStorage.countAll = 0; 6 } 7 document.

自己写的一个简单的js闭包demo

function a(o){ function b(){           btn = btn++; } function c(){           btn = btn--;         }      if(o == 1)           return b();      if(o == 0)           return c();        } div.onclick = a(1);  div.onmouseover = a(0);