团队作业2 第五周 js简单考察

1 每三秒输出一次i值

题目

每隔三秒输出一次i值

for(var i = 0; i < 5; i++){    
  // TODO 
}

我的解法

for(var i = 0;i < 5;i++){

    (function(i){

        setTimeout(() => {console.log(i);}, 3000 * i);

    }(i));
}

这里用的是var,所以必须要用立即执行函数,而且setTimeout是异步任务,所以会被同时放到异步任务里面去,这就需要设置定时器为3000*i

2 下面代码的输出结果是什么

题目

var f = function() {
    var c = "ccc";
    return {
        a: function() {
            return c;
        },
        b: function(d) {
            c = d;
        }
    }
}()

console.warn(f.a())         
console.warn(f.c)           
console.warn(f.b("www"))    
console.warn(f.a())        

我的题解

  1. ccc
  2. undefined
  3. undefined
  4. www

第一个应该是直接就调用了f的属性,直接返回c
第二个是var的作用域问题,f只是一个函数的实例化,f.c没有定义
第三个没有返回值

3 找出多出来的字符

题目

有两个小写字符串s1、s2,s2是s1经过打乱后增加一个小写字符得到的, 编程得出s2中增加的字符,算法时间复杂度最好接近O(n)(如s1是’abc’,s2是’cbad’,那么增加的字符为‘d’。

答案

思路

将s1和s2转化成数组,然后用数组的sort方法重新排列,再进行对应位置的比较,只要不相等,那s2的那个就是多出来的

代码

s1 = s1.split("").sort();
s2 = s2.split("").sort();
for(let i = 0; i < s2.length; i++){
    if(s1[i] != s2[i]){
        console.log(s2[i]);
        break;
    }
}

4 实现数组的随机排序

思路

random弄出随机的下标
将随机的存入到函数
将随机下标对应的值存入到新数组的末尾
删除原数组里的这个值

代码实现

function randomSort(arr){
    let result = [];
    while (arr.length > 0) {
        var randomIndex = Math.floor(Math.random() * arr.length);
        result.push(arr[randomIndex]);
        arr.splice(randomIndex, 1);
    }
    return result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值