javascript字符串、日期和数学
2019-01-02 本文已影响0人
原上的小木屋
多行字符串的声明有哪几种常见写法?
- 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
var longString = "Long \
long \
long \
string";
- 连接运算符(+)可以连接多个单行字符串,用来模拟多行字符串。
var longString = 'Long ' +
'long ' +
'long ' +
'string';
以下代码输出什么?如何声明 str 让 console.log(str)输出 C:\Users\Document\node\index.js?
var str = 'C:\Users\Document\node\index.js'
console.log(str.length)
- 输出27
- 输出
var str = 'C:\Users\Document\node\index.js'
的方法
将str中的'\'
前加'\'
使后面的'\'
转义.var str = 'C:\\Users\\Document\\node\\index.js'
对于字符串var str = 'hello baidgu.com'
- 获取 str 下标为3的字符
var str1=str[3] // l
- 获取 str 下标为4的字符的 Ascii 码
var str2=str.charCodeAt(str[4]) //104
- 截取字符g到末尾的字符串
var str3=str.substring(str.search('g')) //gu.com
- 从字符o开始,截取长为4个字符的字符串
var str4=str.substr(str.search('o'),4) // o ba
- 获取第一个 l的下标
var str5=str.search('l') //2
写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
。
function getRandIP(){
var a=''
for(var i=0;i<4;i++){
a=a+Math.floor(256*Math.random())+'.'
}
a=a.slice(0,-1);
return a
}
var ip = getRandIP()
console.log(ip) //63.120.52.131
写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff。
function getRandColor(){
var a=''
for(var i=0;i<6;i++){
a=a+Math.floor(16*Math.random()).toString(16)
}
return "#"+a
}
var color = getRandColor()
console.log(color) // #d89e4b
写一个函数,返回从min到max之间的 随机整数,包括min不包括max 。
function retnumber(max,min){
if(max>min){
return Math.ceil(min)+Math.floor((Math.floor(max)-Math.ceil(min))*Math.random());}
else{
return Math.ceil(max)+Math.floor((Math.floor(min)-Math.ceil(max))*Math.random());
}}
写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
function getRandStr(len){
var a=''
var b='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
for(var i=0;i<len;i++){a=a+b[Math.floor(Math.random()*b.length)]}
return a
}
var str = getRandStr(10); // FYZKjXnXeL
写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数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){
if(time/1000<60){
t='刚刚'
}
else if(time/1000/60<60){
t='3分钟前'
}
else if(time/(1000*60*60)<24){
t='8小时前'
}
else if(time/(1000*60*60*24)<30){
t='3天前'
}
else if(time/(1000*60*60*24*30)<2){
t='2个月前'
}
else if(time/(1000*60*60*24*30)>12){
t='八年前'
}
return t
}
实现一个reduce函数,作用和原生的reduce类似下面的例子。
var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); => 6
function reduce(list){
if(list.length==1){return list[0]}
else{list=([list[0]+list[1]]).concat(list.slice(2));return reduce(list)}
}
实现一个flatten函数,将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组,不存在循环引用的情况。
flatten([1, [2], [3, [[4]]]]) => [1, 2, 3, 4];
function flatten(list){
var newlist=[]
for(var i=0;i<list.length;i++){
if(Array.isArray(list[i])){newlist=newlist.concat(flatten(list[i]))}
else{newlist.push(list[i])}
}
return newlist
}