JavaScript高级程序设计(第三版)学习笔记5章

第5章 引用类型

1. Obejct

2. Array

  1. 创建数组
	var colors = new Array(3)    // [,,]
	var colors = new Array("red")   // ["red"]
	var colors = []

  1. 数组的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]
  1. isArray
	var colors = ["red", "green", "pink"]
	Array.isArray(colors);	// true
  1. join
	var colors = ["red", "green", "pink"]
	console.log(colors.join(""));   // redgreenpink
	console.log(colors.join(","));  // red,green,pink
  1. 栈方法 - 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' ]
  1. 队列方法 - shift, unshift

同时使用 unshift 和 pop 可以模拟反向队列

	var colors = ["red", "green", "pink"]
	console.log(colors.shift("blue"));  //  red
	console.log(colors.unshift("black"));   // 3
  1. 重排序方法
	// 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 ]
  1. 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 ]
  1. 取数组 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 ]
  1. splice
	// 直接修改原数组
	var list = [0, 1, 5, 10, 15]
	// 删除
	// 参数-需要删除的第一项的位置,删除的数量
	// 返回值-被删除的值
	console.log(list.splice(0, 2)); // [ 0, 1 ]
	
	// 修改
	// 参数-插入的起始位置, 删除的数量, 新插入的值...	
	// 返回值-空
	console.log(list.splice(1, 0, "12", "23")); // []
  1. 位置方法
// 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
  1. 迭代方法
    1. every - 数组中的每一项都返回true, 则返回true
    2. filter - 把数组中返回值为true的值放在一个数组中返回
    3. forEach - 对数组中的每一项进行操作,没有返回值
    4. map - 对数组中的每一项进行操作,返回每一项计算后的值组成的数组
    5. some - 数组中任意一项为true, 则返回true
list.forEach((item, index, array) => {
    console.log(item);	// 每一项的值
    console.log(index);	//	索引 每次加1
    console.log(array);	//	原数组
});
  1. 归并方法
// 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。在某 地进入夏令时的情况下,这个值会有所变化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值