第5章 引用类型
1. Obejct
2. Array
- 创建数组
var colors = new Array(3) // [,,]
var colors = new Array("red") // ["red"]
var colors = []
- 数组的
length
属性不是只读的,可以通过这个属性向数组的末尾添加或删除项
var colors = ["red", "green", "pink"]
console.log(colors); // ["red", "green", "pink"]
colors.length = 2
console.log(colors); // ["red", "green"]
colors.length = 4
console.log(colors); // ["red", "green", empty × 2]
- isArray
var colors = ["red", "green", "pink"]
Array.isArray(colors); // true
- join
var colors = ["red", "green", "pink"]
console.log(colors.join("")); // redgreenpink
console.log(colors.join(",")); // red,green,pink
- 栈方法 - push, pop
var colors = ["red", "green", "pink"]
console.log(colors.push("blue", "white")); // 5
console.log(colors.pop()); // white
console.log(colors); // [ 'red', 'green', 'pink', 'blue' ]
- 队列方法 - shift, unshift
同时使用 unshift 和 pop 可以模拟反向队列
var colors = ["red", "green", "pink"]
console.log(colors.shift("blue")); // red
console.log(colors.unshift("black")); // 3
- 重排序方法
// 1. reverse 和 sort 直接修改原数组,返回修改后的数组
// 2. sort 默认的是比较每个值的字符串
// 3. sort 可以接收比较函数作为参数
var list = [1, 4, 2, 3, 5]
console.log(list.reverse()); // [ 5, 3, 2, 4, 1 ]
console.log(list.sort()); // [ 0, 1, 10, 15, 5 ]
function compare(val1, val2){
if(val1 < val2){
return -1
}
else if(val1 > val2){
return 1
}
else{
return 0
}
}
console.log(list.sort(compare)); // [ 0, 1, 5, 10, 15 ]
- concat 连接数组
// 1. 不会改变原数组,返回新的数组
// 2. 可接受值、一个或者多个数组
var list = [0, 1, 5, 10, 15]
var list2 = [6, 7]
console.log(list.concat(list2, list2, 555)); // [ 0, 1, 5, 10, 15, 6, 7, 6, 7, 555 ]
- 取数组 slice
// 不会改变原数组,返回新的数组
var list = [0, 1, 5, 10, 15]
console.log(list.slice(1)); // [ 1, 5, 10, 15 ]
console.log(list.slice(1, 3)); // [ 1, 5 ]
console.log(list.slice(-2)); // [ 10, 15 ]
console.log(list.slice(-2, -1)); // [ 10 ]
- splice
// 直接修改原数组
var list = [0, 1, 5, 10, 15]
// 删除
// 参数-需要删除的第一项的位置,删除的数量
// 返回值-被删除的值
console.log(list.splice(0, 2)); // [ 0, 1 ]
// 修改
// 参数-插入的起始位置, 删除的数量, 新插入的值...
// 返回值-空
console.log(list.splice(1, 0, "12", "23")); // []
- 位置方法
// indexOf - 从前向后
// lastIndexOf - 从后往前
var list = [0, 10, 5, 10, 15, 17]
console.log(list.indexOf(3)); // -1
console.log(list.indexOf(10)); // 1
console.log(list.lastIndexOf(10)); // 3
console.log(list.indexOf(5)); // 2
console.log(list.lastIndexOf(5)); // 2
- 迭代方法
- every - 数组中的每一项都返回true, 则返回true
- filter - 把数组中返回值为true的值放在一个数组中返回
- forEach - 对数组中的每一项进行操作,没有返回值
- map - 对数组中的每一项进行操作,返回每一项计算后的值组成的数组
- some - 数组中任意一项为true, 则返回true
list.forEach((item, index, array) => {
console.log(item); // 每一项的值
console.log(index); // 索引 每次加1
console.log(array); // 原数组
});
- 归并方法
// reduce 正向
// reduceRight - 反向
var list = [0, 10, 5, 10]
console.log(list.reduce((prev, cur, index, array)=>{
console.log(prev); // 前一次函数的返回值 [0, 10, 15]
console.log(cur); // 当前位置的值 [10, 5, 10]
return prev + cur
})); // 25
3. Date
console.log(Date.now()); // 当前时间毫秒数
var date1 = new Date(2008, 8, 8)
var date2 = new Date(2008, 9, 9)
console.log(date1 > date2); // false
日期/时间组件方法
getTime()
返回表示日期的毫秒数;与valueOf()方法返回的值相同
setTime(毫秒)
以毫秒数设置日期,会改变整个日期
getFullYear()
取得4位数的年份(如2007而非仅07)
getUTCFullYear()
返回UTC日期的4位数年份
setFullYear(年)
设置日期的年份。传入的年份值必须是4位数字(如2007而非仅07) setUTCFullYear(年)
设置UTC日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
getMonth()
返回日期中的月份,其中0表示一月,11表示十二月
getUTCMonth()
返回UTC日期中的月份,其中0表示一月,11表示十二月
setMonth(月)
设置日期的月份。传入的月份值必须大于0,超过11则增加年份
setUTCMonth(月)
设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份
getDate()
返回日期月份中的天数(1到31)
getUTCDate()
返回UTC日期月份中的天数(1到31)
setDate(日)
设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份 setUTCDate(日)
设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份
getDay()
返回日期中星期的星期几(其中0表示星期日,6表示星期六)
getUTCDay()
返回UTC日期中星期的星期几(其中0表示星期日,6表示星期六)
getHours()
返回日期中的小时数(0到23)
getUTCHours()
返回UTC日期中的小时数(0到23)
setHours(时)
设置日期中的小时数。传入的值超过了23则增加月份中的天数
setUTCHours(时)
设置UTC日期中的小时数。传入的值超过了23则增加月份中的天数
getMinutes()
返回日期中的分钟数(0到59)
getUTCMinutes()
返回UTC日期中的分钟数(0到59)
setMinutes(分)
设置日期中的分钟数。传入的值超过59则增加小时数
setUTCMinutes(分)
设置UTC日期中的分钟数。传入的值超过59则增加小时数
getSeconds()
返回日期中的秒数(0到59)
getUTCSeconds()
返回UTC日期中的秒数(0到59)
setSeconds(秒)
设置日期中的秒数。传入的值超过了59会增加分钟数
setUTCSeconds(秒)
设置UTC日期中的秒数。传入的值超过了59会增加分钟数
getMilliseconds()
返回日期中的毫秒数
getUTCMilliseconds()
返回UTC日期中的毫秒数
setMilliseconds(毫秒)
设置日期中的毫秒数
setUTCMilliseconds(毫秒)
设置UTC日期中的毫秒数
getTimezoneOffset()
返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某 地进入夏令时的情况下,这个值会有所变化