ES5数组 & 字符串 & Math & Date
JS字符串
表示方法
- var a = '';
- var a = "";
- var a = "''";
当字符串内部有单引号的时候,外部也需要使用双引号
多行与转义
转义字符
var str = 'he'llo'
var str = '\\ddd'
出现了两个斜杠字符串可以拆成多行
常用的方法
- str.charAt()
- str.charCodeAt
- str.subString()
- str.substr()
- str.search()
- str.replace()
- str.match
大小写
- str.toupperCase
- str.toLowerCase
str = '衣服的颜色是' + color "衣服的颜色是:"
str2 = '衣服的颜色是${color}'
JS Math
Math提供了math的数据
方法
round
Math.round(4.2)
四舍五入
abs, max, min
Math.max.apply(null,[3,-4,2,6])
数组就会自动地传递上去
floor,ceil
floor方法返回参数值地最大整数
ceil方法返回法于参数值地最小整数
pow, sqrt
random
Math.random()
返回0到1地一个伪随机数,可能等于0,但是一定小于1
- 获取一个随机的字符串
function randomStr(length){
var str = ''
var dict = '0123456789zabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
for(var i = 0; i < len; i++){
var index = Math.floor(Math.random()*dict.length)
str +=dict[index]
return str
}
var str = randomStr(32)
console.log(str)
function randomIP(){}
}
Date
Date.now()
now返回当前距离1970年1月1日00:00:00的毫秒表
Date.now();
Date()返回当前的字符串
Date.parse
解析日期字符,返回距离1970年1月1日
Date
返回一个当前日期和时间的字符串
new Date()
get
获取100天以前的时间对象
var curTIme = Date.now()
new Date(curTime -1002460601000)
new Date(curTime -1002460601000).getMonth
new Date(curTime -1002460601000).getFate
问一段代码的执行时间是多少
var start = Date.now()
var end = Date.now()
end - start
多行字符串的声明有哪几种常见写法?
利用\
var str = 'abc\
def\
ghi\'
console.log(str)//abcdefghi
利用 +
var str = 'abc' + 'def' + 'ghi';
console.log(str) //abcdefghi
以下代码 输出什么?
var str = 'C:\Users\Document\node\index.js'
console.log(str.length)
如何声明 str 让 console.log(str)输出 C:\Users\Document\node\index.js?
27 统计字符串长度的时候不算上\
var str = 'C:\\Users\\Document\\node\\index.js'
console.log(str)
对于字符串
var str = 'hello jirengu.com'
写出以下操作的代码范例
- 获取 str 下标为3的字符
- 获取 str 下标为4的字符的 Ascii 码
- 截取字符g到末尾的字符串
- 从字符o开始,截取长为4个字符的字符串
- 获取第一个 l的下标
var str = 'hello jirengu.com'
console.log(str[3])//l
console.log(str.charCodeAt(4))//108
console.log(str.substring(11,str.length))
console.log(str.substr(4,4))
console.log(str.search('l'))
写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255。
function getRandIP(){
//补全
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
function getRandIP(){
var temp;
var a = [];
for(var i = 0; i < 4; i++){
var temp = Math.floor(Math.random()*256)
a.push(temp)
}
return a.join('.')
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff。
function getRandColor(){
var temp
var arr = ['#']
for (var i = 0; i<6; i++){
temp = Math.floor(Math.random()*16)
arr.push(temp)
}
return arr.join('')
}
var color = getRandColor()
console.log(color) // #3e2f1b
写一个函数,返回从min到max之间的 随机整数,包括min不包括max 。
function returnRandom(max,min) {
return Math.floor(Math.random()*max-min)+min
}
console.log(returnRandom(7,20))
写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
function getRandStr(len){
var sta = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var a = "";
for(var i=0; i
写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数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 past = new Date() - time;
if(past < (60*1000)){
console.log('刚刚');
}else if(past < (60*60*1000)){
console.log('3分钟前');
}else if(past < (24*60*60*1000)){
console.log('八小时前');
}else if(past < (30*24*60*60*1000)){
console.log('3天前');
}else if(past < (12*30*24*60*60*1000)){
console.log('2个月前');
}else{
console.log('八年前');
}
}
friendlyDate( '1484286699422' ) // 1分钟前(以当前时间为准)
friendlyDate('1483941245793') //4天前(以当前时间为准)
实现一个reduce函数,作用和原生的reduce类似下面的例子。
var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); => 6
var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); //6
function reduce(arr,iterate,initValue){
var tmpArr = (initValue === undefined ?[]:[initValue].concat(arr))
while(tmpArr.length>1){
tmpArr.splice(0,2,iterate(tmpArr[0],tmpArr[1]));
}
return tmpArr[0];
}
var sum = reduce([3,5,6],function(v1,v2){
return v1 + v2;
},10);
console.log(sum);//24
实现一个flatten函数,将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组,不存在循环引用的情况。
flatten([1, [2], [3, [[4]]]]) => [1, 2, 3, 4];
function flatten(arr){
return arr.reduce(function(arr1,arr2){
return arr1.concat(Array.isArray(arr2)?flatten(arr2):arr2)
},[])
}
function flatten2(arr){
var newArr= [];
arr.forEach(function(e){
if(Array.isArray(e)){
newArr=newArr.concat(flatten2(e));
}else {
newArr.push(e);
}
})
return newArr;
}
var arr = [3, [2, -4, [5, 7]], -3, ['aa', [['bb']]]]
var arr1=flatten(arr);
console.log(arr1);//[3, 2, -4, 5, 7, -3, "aa", "bb"]
var arr2=flatten2(arr);
console.log(arr2);//[3, 2, -4, 5, 7, -3, "aa", "bb"]