一、对于字符串
var str = 'hello jirengu.com'
写出以下操作的代码范例
- 获取 str 下标为3的字符
- 获取 str 下标为4的字符的 Ascii 码
- 截取字符g到末尾的字符串
- 从字符o开始,截取长为4个字符的字符串
- 获取第一个 l的下标
var str = 'hello jirengu.com'
console.log(str.charAt(3))
console.log(str.charCodeAt(4))
console.log(str.substring(str.search('g'),str.length))
console.log(str.substr(str.search('o'),4))
var s1 = str.search('l')
console.log(s1)
二、写一个函数,返回从min到max之间的 随机整数,包括min不包括max 。
function random(min,max) {
return Math.random()*(max - min)+min
}
三、写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255。
function getRandIP(){
function random(a,b){
return Math.floor(Math.random()*(b - a + 1))+a
}
var arr = []
for(var i=0;i<4;i++) {
arr.push(random(0,255))
}
return arr.join('.')
}
var ip = getRandIP()
console.log(ip) // 10.234.121.453
四、写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff。
function getRandColor(){
function random(a,b){
return Math.floor(Math.random()*(b - a + 1))+a
}
var arr = ''
var dict = '0123456789abcdef'
for(var i=0;i<6;i++) {
arr += dict[random(0,15)]
}
return '#' + arr
}
var color = getRandColor()
console.log(color) // #3e2f1b
五、写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
function getRandStr(len){
var str = ''
var dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
for(var i = 0;i < len;i++) {
var index = Math.floor(Math.random()*dict.length)
str += dict[index]
}
return str
}
var str = getRandStr(10);
console.log(str)
六、写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:
刚刚( t 距当前时间不到1分钟时间间隔)
3分钟前 (t距当前时间大于等于1分钟,小于1小时)
8小时前 (t 距离当前时间大于等于1小时,小于24小时)
3天前 (t 距离当前时间大于等于24小时,小于30天)
2个月前 (t 距离当前时间大于等于30天小于12个月)
8年前 (t 距离当前时间大于等于12个月)
function friendlyDate(time){
var dtime = Date.now() - parseInt(time)
var minute = 60*1000
var hour = minute*60
var day = hour*24
var month = day*30
var year = month*12
if (dtime < minute) {
return '刚刚'
}else
if (dtime < hour) {
return `${Math.floor(dtime/minute)}分钟前`
}else
if (dtime < day) {
return `${Math.floor(dtime/hour)}小时前`
}else
if(dtime < month) {
return `${Math.floor(dtime/day)}天前`
}else
if(dtime < year) {
return `${Math.floor(dtime/month)}月前`
}else
if(dtime >= year) {
return `${Math.floor(dtime/year)}年前`
}
}
var date1 = Date.now()
console.log(friendlyDate(date1))
var date2 = new Date (2018,1,27,14,46)
console.log(friendlyDate(date2.getTime()));
var date3 = new Date (2018,1,27,11,54);
console.log(friendlyDate(date3.getTime()));
var date4 = new Date (2018,1,26,14,55);
console.log(friendlyDate(date4.getTime()));
var date5 = new Date (2018,0,28,14,57);
console.log(friendlyDate(date5.getTime()));
var date6 = new Date (2017,2,4,14,58);
console.log(friendlyDate(date6.getTime()));
七、实现一个reduce函数,作用和原生的reduce类似下面的例子。
function reduce(arr,fn,initvalue){
var arr2 = (initvalue === undefined ? [] :[initvalue]).concat(arr)
while(arr2.length>1) {
arr2.splice(0,2,fn(arr2[0],arr2[1]))
}
return arr2[0]
}
var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0)
console.log(sum)
八、实现一个flatten函数,将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组,不存在循环引用的情况。
var arr =[1, [2], [3, [[4]]]]
var arr2 = flat(arr)
function flat(arr) {
var arr2 = []
arr.forEach(function(val){
if(Array.isArray(val)){
arr2 = arr2.concat(flat(val))
}else{
arr2.push(val)
}
})
return arr2
}
console.log(arr2)
网友评论