ES5数组 & 字符串 & Math & Date

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'

写出以下操作的代码范例

  1. 获取 str 下标为3的字符
  2. 获取 str 下标为4的字符的 Ascii 码
  3. 截取字符g到末尾的字符串
  4. 从字符o开始,截取长为4个字符的字符串
  5. 获取第一个 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"]

你可能感兴趣的:(ES5数组 & 字符串 & Math & Date)