JS的一些坑(持续更新)

一. 数组排序函数 sort()

JS使用alphanumeric排序,这种排序规则是看首字符的,

1.排字母字符
var b1 = ['aa', 'as', 'ffer', 'bds', 'hjh'];
var b2 = b1.sort();

console.log(b2)    //["aa", "as", "bds", "ffer", "hjh"]

排字母字符是没毛病的,会按照字母表顺序去排;但是排数字的时候就会有坑了

2.排数字
var a1 =[1, 22, 5, 12, 4, 67, 15];
var a2 =a1.sort();

console.log(a2)      //[1, 12, 15, 22, 4, 5, 67]

可以看出,是按照最大位数字逐位下降进行排序的,所以我们要正确地从小到大进行排序,要这样写

var a1 =[1, 22, 5, 12, 4, 67, 15];
var a2 =a1.sort((a, b) => a - b);
console.log(a2)    //[1, 4, 5, 12, 15, 22, 67]

倒序

var a1 =[1, 22, 5, 12, 4, 67, 15];
var a2 =a1.sort((a, b) => b - a);
console.log(a2)    //[67, 22, 15, 12, 5, 4, 1]

说起倒序,就想起了另一个倒序的函数,reverse(),这个用于排字母就好了,数字的还是用sort()

二.日期函数 Date()

1.Date() 和 new Date(),都可以输出当前日期
var a1 = Date();    //加不加参数都一样
var a2 = new Date();    //不加参数

console.log(a1);    //Fri Sep 08 2017 15:59:44 GMT+0800
console.log(a2);    //Fri Sep 08 2017 15:59:44 GMT+0800
2.new Date() 接受一个参数(数字X),返回1970年1月1日 + X毫秒的值
var a1 = new Date(3000);
console.log(a1);    //Thu Jan 01 1970 08:00:03 GMT+0800
3.加3个数字参数new Date(年,月,日),返回1900年加上相应年月日的值(经测试要满足小于2000年)
var a1 = new Date(3,13,14);
console.log(a1);    //Sun Feb 14 1904 00:00:00 GMT+0800

超出2000年的,会直接按实际输入的参数显示年月日,如

var a1 = new Date(100,1,1);
console.log(a1);    Mon Feb 01  100 00:00:00 GMT+0800

输入年参数不足100,而月日参数换算后可以满足年100的,也会按计算输出日期,所以关键是年参数不能是100.。

var a1 = new Date(99,15,1);
console.log(a1);    //Sat Apr 01 2000 00:00:00 GMT+0800 

也许你会问,那么公元0~99年的时间怎么输出?嘛,我也不知道。。手打行不行?

三.判断是否数组类型

数组不是基础类型,所以判断的时候。。。看下面!

var a1 = [1,2,3,4,4];
console.log(typeof(a1));    //输出 object,没错,输出类型为对象了0.0

真要判断一个变量是不是数组,要用Array.isArray(变量)

var a1 = [1,2,3,4,4];
console.log(Array.isArray(a1));    //true

===17.09.08=================================================

你可能感兴趣的:(JS的一些坑(持续更新))