JavaScript---数组内置方法与日期内置方法汇总
目录
一、Array-数组内置方法
1.1contact(value1,value2,...,valueN)
1.2copyWithin(target,start,end)
1.3entries()
1.4find(() => {})
1.5findIndex(() => {})
1.6flat(number)
1.7flatMap(() => {})
1.8includes(targetValue)
1.9indexOf(targetValue)
1.10join(str)
1.11lastIndexOf(targetValue)
1.12pop()
1.13push()
1.14reverse()
1.15slice(start,end)
1.16sort((a,b) => {})
1.17splice(start,deleteCount,item1,item2,...,itemN)
1.18unshift(element1,element2,...,elementN)
1.19values()
二、Date-日期对象内置方法
2.1Date()
2.2Date(stamp || string || year,month,day,hour,minute,second)
2.3获取日期和时间信息
2.3.1getFullYear()
2.3.2getMonth()
2.3.3getDate()
2.3.4getDay()
2.3.5getHours()
2.3.6getMinutes()
2.3.7getSeconds()
2.3.8getMilliseconds()
2.3.9getTime()
2.4设置日期和时间信息
2.5日期和时间的格式化
2.5.1toLocaleString()
2.5.2toISOString()
一、Array-数组内置方法
1.1contact(value1,value2,...,valueN)
concat(value1,value2,....)方法用来合并两个或多个数组。此方法不会更改现有数组,会返回一个新数组。
- value:数组
let a = [1,2,3]
let b = [6,7]
let c = [8,9]
let arr = a.concat(b)
console.log(arr) // 1 2 6 7
let arr2 = a.concat(b,c)
console.log(arr2) // 1 2 3 6 7 8 9
1.2copyWithin(target,start,end)
copyWithin(target,start,end)方法“浅复制”数组的一部分到同一数组中的另一个位置,修改原数组,不会改变原数组长度。
- target:表示复制元素粘贴的起始位置。若为为负数,target将从数组末尾开始计算。如果target大于数组长度,则不会发生复制
- start:开始复制元素的起始位置索引,默认为0
- end:复制元素的结束位置索引(不包含该位置元素)
let a = [1,2,3,4,5]
let b = [1,2,3,4,5]
console.log(a.copyWithin(3,1)) // [1,2,3,2,3]
console.log(b.copyWithin(3,2,4)) // [1,2,3,3,4]
1.3entries()
entries()方法返回一个新的“Array Iterator”对象,该对象包含数组中每个索引的键/值对
const arr = [1, 2, 3, 4, 5];
const iter = arr.entries();
for (const i of iter) {
console.log(i);
}
//[0, 1], [1, 2], [2, 3], [3, 4], [4, 5]
1.4find(() => {})
find()方法返回数组中满足函数条件的第一个元素的值,否则返回undefined。
let i = [1,2,3,4];
let str = i.find((item) => item > 2)
let str2 = i.find((item) => item > 20)
console.log(str) // 3
console.log(str2) // undefined
1.5findIndex(() => {})
findIndex()方法返回数组中满足函数条件的第一个元素的索引。否则返回-1
let i = [1,2,3,4];
let str = i.findIndex((item) => item > 2)
let str2 = i.findIndex((item) => item > 20)
console.log(str) // 2
console.log(str2) // -1
1.6flat(number)
flat(number)方法按照一个可指定的深度递归遍历数组,并且将所有元素与遍历到的子数组中的元素合并为一个新的数组返回。
- number:默认为1,表示递归的深度,设置为Infinity表示无限深度
let i = [1,2,3,4,9,[5,6]];
let arr = i.flat()
console.log(arr) // [1, 2, 3, 4, 9, 5, 6]
console.log(i) // [1, 2, 3, 4, 9, [2,6]]
1.7flatMap(() => {})
flatMap()方法与flat作用一致,不过它的递归深度为1,并且可以对每个元素进行处理
let i = ["a", "b", ["c"]];
console.log(i.flatMap(x => x + "aa")); // ["aaa", "baa", "caa"]
1.8includes(targetValue)
includes()方法判断某数组包含某一个值,如果包含返回True,否则返回False
let i = [1, 2, 3, 4, 5]
console.log(i.includes(3)) // true
console.log(i.includes(6)) // false
1.9indexOf(targetValue)
indexOf()方法返回在数组中符合条件元素的第一个索引,如果不存在,返回-1
let i = [1, 2, 3, 4, 5,1]
console.log(i.indexOf(1)) // 0
console.log(i.indexOf(6)) // -1
1.10join(str)
join(str)方法将数组中的所有元素用“str”作为连接符连接成一个字符串
let i = ['a', 'b', 'c']
console.log(i.join('')) // abc
1.11lastIndexOf(targetValue)
lastIndexOf()方法返回指定元素的下标索引(从数组最后一个元素开始查找),如果不存在返回-1
let i = [1, 2, 3, 4, 5];
console.log(i.lastIndexOf(3)) // 2
console.log(i.lastIndexOf(6)) // -1
1.12pop()
pop()方法从数组中删除最后一个元素,返回该元素的值,此方法更改数组长度(修改原数组)
let i = [1, 2, 3, 4, 5];
console.log(i.pop()); //5
console.log(i); //[1, 2, 3, 4]
1.13push()
push()方法将一个或多个元素添加到数组的末尾,并返回该数组的长度(修改原数组)。
let i = [1, 2, 3, 4, 5];
console.log(i.push(1)); //6
console.log(i); //[1, 2, 3, 4, 5, 1]
1.14reverse()
reverse()方法将元素逆序,该方法改变原数组
let i = [1, 2, 3, 4, 5];
i.reverse();
console.log(i); // [5, 4, 3, 2, 1]
1.15slice(start,end)
slice(start,end)方法返回一个新的数组对象,该对象有start和end(不包括end)决定的原数组的浅拷贝,原数组不会被改变。
- start:切割的起始位置
- end:切割的终止位置,不包括end
let i = [1, 2, 3, 4, 5];
console.log(i.slice(1)); // [2, 3, 4, 5]
console.log(i.slice(1,3)); // [2, 3]
1.16sort((a,b) => {})
sort(function)方法用原地算法对数组的元素进行排序,默认排序是:“将元素转换为字符串,然后比较UTF-16代码单元值序列”, 909 该方法修改原数组
- function(a,b):返回值为True,表示a与b交换位置。返回值为False,表示a与b不交换位置
let i = [1, 2, 53, 22, 5];
i.sort((a,b) => a > b ? 1 : -1)
console.log(i) // [1,2,5,22,53]
i.sort((a,b) => a > b ? -1 : 1)
console.log(i) // [53,22,5,2,1]
1.17splice(start,deleteCount,item1,item2,...,itemN)
splice(start,deleteCount,[item1,item2,...])方法通过删除或替换现有元素以及添加新的元素来修改数组,此方法会改变原数组。
- start:操作开始的索引位置
- deleteCount:表示从start位置开始删除的个数,如果为空表示删除start到数组末尾所有元素
- item1,item2:可选,要插入到数组start位置的元素,如果不指定这些元素,splice()方法只会执行删除操作
const arr = [1, 2, 3, 4, 5];
// 删除元素
arr.splice(2,2)
console.log(arr) // [1, 2, 5]
// 插入元素
arr.splice(2,0,3,4)
console.log(arr) // [1, 2, 3, 4, 5]
// 替换元素
arr.splice(2,2,6,7)
console.log(arr) // [1, 2, 6, 7, 5]
1.18unshift(element1,element2,...,elementN)
unshift(element1,element2,....)方法用来在数组开头插入多个元素
const arr = [1, 2, 3, 4, 5];
arr.unshift(1,2);
console.log(arr); // [1, 2, 1, 2, 3, 4, 5]
1.19values()
values()方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的值
const arr = [1, 2, 3, 4, 5];
for (const i of arr.values()){
console.log(i);
}
//1 2 3 4 5
二、Date-日期对象内置方法
Date对象:基于1970年1月1日(世界标准时间)起的毫秒数,Date对象是一个构造函数,需要实例化后才能使用。
注意:创建一个新Date()的随想使用new操作符;如果将它作为常规函数调用,将返回一个字符串,而并非Date对象
2.1Date()
只使用Date(),而没有任何参数时,返回系统的当前时间。
const date = new Date();
console.log(Date()); //Mon Mar 03 2025 09:14:06 GMT+0800 (中国标准时间)
console.log(date); //2025-03-03T01:14:28.197Z
2.2Date(stamp || string || year,month,day,hour,minute,second)
给Date()传入参数,即可创建一个初始化时间的Date对象。
- stamp:时间戳创建
- string:日期字符串创建
- year,month,day,hour,minue,second:使用年、月、日、时、分、秒创建,其中,月份是从0开始计数的,如0代表一月,11代表十二月。
// 使用时间戳创建
// 时间统一为2021年1月1日0点0分0秒
const timeStamp = 1609459200000; //时间戳
const dateString = '2021-01-01T00:00:00' //日期字符串
const dateArray = [2021, 0, 1, 0, 0, 0, 0] //日期数组
const timeDate = new Date(timeStamp); //根据时间戳创建Date对象
const dateDate = new Date(dateString); //根据日期字符串创建Date对象
const arrayDate = new Date(...dateArray); //根据日期数组创建Date对象
console.log(timeDate);
console.log(dateDate);
console.log(arrayDate);
效果:
注意:“使用非时间戳创建的时间,都会因为本地时区出现时差。例如在我们国家使用的是UTC+8的时区,因此会在原先时间的基础上减去8个小时”
2.3获取日期和时间信息
注意:不使用UTC方法时,返回的都是本地时间(getFullYear)。使用UTC方法,返回的都是UTC时间(getUTCFullYear)。
2.3.1getFullYear()
获取年份(四位数)
const timeStamp = 1609459200000; //时间戳
const timeDate = new Date(timeStamp); //根据时间戳创建Date对象
console.log(timeDate.getFullYear()); //2021
2.3.2getMonth()
获取月份(0-11),0代表一月,11代表十二月
const timeStamp = 1609459200000; //时间戳
const timeDate = new Date(timeStamp); //根据时间戳创建Date对象
console.log(timeDate.getMonth()); //0
2.3.3getDate()
获取月份中的某一天(1-31)
const timeStamp = 1609459200000; //时间戳
const timeDate = new Date(timeStamp); //根据时间戳创建Date对象
console.log(timeDate.getDate()); //1
2.3.4getDay()
获取星期中的某一天(0-6),0表示星期天
const timeStamp = 1609459200000; //时间戳
const timeDate = new Date(timeStamp); //根据时间戳创建Date对象
console.log(timeDate.getDay()); //5
2.3.5getHours()
获取小时数(0-23)
const timeStamp = 1609459200000; //时间戳
const timeDate = new Date(timeStamp); //根据时间戳创建Date对象
console.log(timeDate.getHours()); //8
2.3.6getMinutes()
获取分钟数(0-59)
// 带有时区标识 Z 表示 UTC 时间
const dateString = '2021-01-01T00:00:00Z';
const date = new Date(dateString);
console.log(date.getMinutes()); // 0
2.3.7getSeconds()
获取秒数(0-59)
// 带有时区标识 Z 表示 UTC 时间
const dateString = '2021-01-01T00:00:00Z';
const date = new Date(dateString);
console.log(date.getSeconds()); // 0
2.3.8getMilliseconds()
获取毫秒数(0 - 999)
// 带有时区标识 Z 表示 UTC 时间
const dateString = '2021-01-01T00:00:00Z';
const date = new Date(dateString);
console.log(date.getMilliseconds()); // 0
2.3.9getTime()
获取自1970年1月1日 00:00:00 UTC 以来的毫秒数
// 带有时区标识 Z 表示 UTC 时间
const dateString = '2021-01-01T00:00:00Z';
const date = new Date(dateString);
console.log(date.getTime()); // 1609459200000
2.4设置日期和时间信息
-
setFullYear(year,[month,date]):设置年份,可选择性的设置月份、日期
-
setMonth(month,[date]):设置月份,可选择性的设置日期
-
setDate(date):设置月份中的某一天
-
setHours(hours,[minutes,seconds,milliseconds]):设置小时数,可选择性的设置分、秒、毫秒
-
setMinutes(minutes,[seconds,ms]):设置分钟数,可选择性的设置秒、毫秒
-
setSeconds(seconds,[ms]):设置秒数,可选择性的设置毫秒
-
seMilliseconds(ms):设置毫秒数
-
setTime(milliseconds):设置自1970年1月1日 00:00:00UTC以来的毫秒数来设置时间
// 带有时区标识 Z 表示 UTC 时间
const dateString = '2021-01-01T00:00:00Z';
const date = new Date(dateString);
date.setFullYear(2025);
date.setMonth(1);
date.setDate(10);
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
console.log(date);
2.5日期和时间的格式化
2.5.1toLocaleString()
根据本地时间格式将日期和时间转换为字符串
const date = new Date();
console.log(date.toLocaleString()); //2025/3/3 12:44:53
2.5.2toISOString()
将日期和时间转换为ISO 8601格式的字符串
const date = new Date();
console.log(date.toISOString()); //2025-03-03T-04:46:03.253Z