【第二次作业答案】 JS 算法

1.前世今生:根据用户输入的名字,查找他的前世是谁。

  获取用户输入名字中的姓(字符串截取),从数据库/数组中查找相似的姓,提出名字,从中返回一个随机名字。

  例如数组:

  var arr = ["李世民","荆轲","后羿","刘邦","白起","白浅浅","李元芳","李白","刘备","刘禅","关羽","张飞","妲己","孙悟空","鲁班","安琪拉","刘亚瑟","程咬金","张无忌","张良"];

  当用户输入姓名“张三”,将会从“张飞”、“张无忌”、“张良”中随机返回一个名字。

var name = prompt("请输入姓名");
			var firstName = name.slice(0,1);
			console.log(firstName);
			var newArr = [];
			for(var i=0;i<arr.length;i++){
				var hero = arr[i];
				if(arr[i].slice(0,1)==firstName){
					newArr.push(hero);
				}
			}
			var random = Math.random()*newArr.length;
			var index = Math.floor(random);
			//var index=Math.floor(Math.random()*newArr.length);
			console.log(newArr);
			console.log(index);
			console.log("您的前世是:"+newArr[index]);	
			alert("您的前世是:"+newArr[index]);

2.封装一个函数,给定一个字符串数组var arr = ["com", "briup.com", "cn", "briup.com.cn", "http://www"],输出最长的字符串元素对应的索引和字符串值。

var _ = require("lodash");
	var arr = ["com", "briup.com", "cn", "briup.com.cn", "http://www"];
	maxKey=0;
	_.forEach(arr,function(value,key){
		if(value.length>arr[maxKey].length)
			maxKey=key;
	});
	console.log("最长字符串在数组中的索引:"+maxKey,"字符串的值是:"+arr[maxKey]);

3.封装一个函数,给定一个字符串,输出出现最多次的那个字符和索引。

var str='jbdjwbdwjbbjwebbb';
function fn3(str){
    var len = str.length;
    var obj = {};
    for(var i=0;i<len;i++){
        if(str.charAt(i) in obj){
            obj[str.charAt(i)]++;
        }else{
            obj[str.charAt(i)]=1;
        }
    }
    var num=0;//比较值
    var res='';//结果
    for(var k in obj){
        if(obj[k]>num){
            num = obj[k]
            res = k;
        }
    }
    console.log(res);
}

4.封装一个函数,判断n是否是幸运数字

幸运数:length为偶数,并且前一半的和等于后一半的和。例如:isLucky(1230)=true

function isLucky(n) {
		var str = String(n);
		var flag = false;
		var result1 = 0;
		var result2 = 0;
		if(str.length%2==0){
			for(var i=0;i<str.length;i++){
				if(i<str.length/2){
					result1 += Number(str.charAt(i));
				}else{
					result2 += Number(str.charAt(i));
				}
			}
			if(result1==result2){
				flag = true;
			}
		}
		return flag;
	}
	console.log(isLucky(1230));//true

5.封装一个函数,传入时间戳,返回2021-09-09 10:10:10.不借助第三方库。

var strDate = '';
        $(function(){
            // 获取时间戳
            var nowDate = new Date().getTime(); //1564624526889
            // 调用封装好的时间转换方法
            timestampToTime(nowDate);
        }())
        
        function timestampToTime(timestamp) {
            var date = new Date();//时间戳为10位需*1000,时间戳为13位的话不需乘1000
            var Y = date.getFullYear() + '-';
            var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
            var D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
            var h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':';
            var m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
            var s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());
            
            strDate = Y+M+D+h+m+s;
            return strDate;
            
        }
        console.log(strDate) //2019-08-01 09:55:26

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值