js前端开发那些事儿

Javascript常见问题(三)

2021-07-04  本文已影响0人  small_zeo

一. sort是如何排序的,如何解决sort排序的问题?

var arr = [1,3,4,2]
console.log(arr.sort())  // 1 2 3 4

var arr2 = [3,25,15,18,9,22] 
console.log(arr2.sort())  // 15 18 22 25 3 9

arr2使用sort排序结果错误了,什么原因?
js在计算机中的排序默认是按升序排的,并将排序的元素转为字符串,找对应字符串的Unicode码表。
解决方案:
定义一个比较器函数sort(callback) :

var arr2 =  [3,25,15,18,9,22] 
arr2.sort(function(x, y) {
  return x - y
})
console.log(arr2)  // 3 9 15 18 22 25 

二. Date 对象中getMonth()

var now = new Date() 
now.getTime()  // 1625392958947 是1970.1.1 至今的一个毫秒数
now.getDay()  // 本周的第几天  0表示星期天从开始
now.getDate() // 本月的几号
now.getMonth() // 需要+1才能表示当月是几月份

三. 开发中编码和解码的使用场景

  1. escape() 、unescape() 是js的全局函数,可以直接调用,目前用处不多。
    escape() 函数是对除了ASCII(a-z 0-9)码之外的进行编码
    unescape() 函数是对应escape()的解码
let url = 'https://www.baidu.com?key=jianshu&title=javascript'
let es = escape(url)  
 // "https%3A//www.baidu.com%3Fkey%3Djianshu%26title%3Djavascript"

console.log(unescape(es))  
// "https://www.baidu.com?key=jianshu&title=javascript"
  1. encodeURI() decodeURI() 用的较多
    encodeURI() 是根据unicode进行编码
    decodeURI() 对应的是encodeURI()的解码
let url2 = 'https://www.baidu.com?key=简书&title=javascript'
let ec = encodeURI(url)  
// "https://www.baidu.com?key=%E7%AE%80%E4%B9%A6&title=javascript"

console.log(decodeURI(ec))  
// "https://www.baidu.com?key=简书&title=javascript"
上一篇下一篇

猜你喜欢

热点阅读