常见内置类二
一、数组类型 Array
创建方式
字面量
javascript
var names = ['aaa', 'bbb', 'ccc']
var products = [
{ id: 100, name: '鼠标', price: 88, count: 0 },
{ id: 101, name: '键盘', price: 200, count: 0 },
{ id: 102, name: '耳机', price: 99, count: 0 },
]类 Array
javascript
var arr1 = new Array()
var arr2 = new Array('aaa', 'bbb', 'ccc')
console.log(arr1, arr2, arr3)
// arr1 []
// arr2 ['aaa', 'bbb', 'ccc']
// arr3 [empty × 5]访问元素
- 索引: 访问到返回
元素,访问不到返回undefined
javascript
ar names = ["aaa", "bbb", "ccc"]
console.log(name[0]) // aaaat(): 访问到返回元素,访问不到返回undefined;正数从前往后访问,负数从后往前访问
javascript
var names = ['aaa', 'bbb', 'ccc']
console.log(names.at(0)) // aaa
console.log(names.at(-1)) // ccc修改元素
javascript
var names = ['aaa', 'bbb', 'ccc']
names[0] = 'AAA'
console.log(names) // ['AAA', 'bbb', 'ccc']新增元素
javascript
var names = ['aaa', 'bbb', 'ccc']
names[3] = 'ddd'
console.log(names) // ['aaa', 'bbb', 'ccc', 'ddd']
names[10] = 'jjj'
console.log(names) // ['aaa', 'bbb', 'ccc', 'ddd', empty × 6, 'jjj']删除元素
javascript
var names = ['aaa', 'bbb', 'ccc']
delete names[0]
console.log(names) // [empty, 'bbb', 'ccc']
console.log(names[0]) // undefined尾部添加和删除元素
push(): 添加多个
javascript
var names = ['aaa', 'bbb', 'ccc']
names.push('ddd', 'eee')
console.log(names) // ['aaa', 'bbb', 'ccc', 'ddd', 'eee']pop(): 删除一个
javascript
var names = ['aaa', 'bbb', 'ccc']
names.pop()
console.log(names) // ['aaa', 'bbb']头部添加和删除元素
unshift(): 添加多个
javascript
var names = ['aaa', 'bbb', 'ccc']
names.unshift('111', '222')
console.log(names) // ['111', '222', 'aaa', 'bbb', 'ccc']shift(): 删除一个
javascript
var names = ['aaa', 'bbb', 'ccc']
names.shift()
console.log(names) // ['bbb', 'ccc']任意位置添加和删除元素
splice(start, deleteCount) 删除、添加、替换;
- start 从什么位置开始操作;
- deleteCount 删除元素的个数
javascript
var names = ['aaa', 'bbb', 'ccc']
// 1、删除
names.splice(0, 1)
console.log(names) // ['bbb', 'ccc']
// 2、添加
names.splice(0, 0, 'aaa')
console.log(names) // ['aaa', 'bbb', 'ccc']
// 3、替换
names.splice(2, 3, 'ddd', 'eee')
console.log(names) // ['aaa', 'bbb', 'ddd', 'eee']属性:length
length: 可写
javascript
var names = ['aaa', 'bbb', 'ccc']
console.log(names.length) // 3
names.length = 4
console.log(names) // ['aaa', 'bbb', 'ccc', empty]遍历数组
for循环
javascript
var names = ['aaa', 'bbb', 'ccc']
for (var i = 0; i < names.length; i++) {
console.log(names[i])
}
// aaa bbb cccfor..in
javascript
var names = ['aaa', 'bbb', 'ccc']
for (var index in names) {
console.log(names[index])
}
// aaa bbb cccfor..of
javascript
var names = ['aaa', 'bbb', 'ccc']
for (item of names) {
console.log(item)
}
// aaa bbb ccc截取数组
slice(start, end) [start, end)
javascript
var names = ['aaa', 'bbb', 'ccc']
console.log(names.slice(1)) // ['bbb', 'ccc']
console.log(names.slice(0, 3)) // ['aaa', 'bbb', 'ccc']拼接数组
concat()
javascript
var arr1 = [1, 2, 3]
var arr2 = [4, 5, 6]
var arr3 = [7, 8, 9]
console.log(arr1.concat(arr2, arr3)) // [1, 2, 3, 4, 5, 6, 7, 8, 9]数组元素连接成字符串
join(separator)
javascript
var arr = [1, 2, 3]
console.log(arr.join('*')) // 1*2*3查找元素
indexOf(searchElement): 从前往后查找,查找到返回索引值,查找不到返回-1
javascript
var arr = ['aaa', 'bbb', 'ccc', 'ddd']
console.log(arr.indexOf('aaa')) // 0lastIndexOf(searchElement): 从后往前查找,查找到返回索引值,查找不到返回-1
javascript
var arr = ['aaa', 'bbb', 'ccc', 'ddd']
console.log(arr.lastIndexOf('aaa')) // 0includes(): 查找到返回true,反之返回false
javascript
var arr = ['aaa', 'bbb', 'ccc', 'ddd']
console.log(arr.includes('aaa')) // truefind(): 查找到返回具体值,反之返回undefined
javascript
var students = [
{ id: 100, name: 'Mocha' },
{ id: 200, name: 'Latte' },
]
// for循环查找
var stu1 = null
for (var i = 0; i < students.length; i++) {
if (students[i].id === 100) {
stu1 = students[i]
break
}
}
if (stu1) {
console.log(stu1) // { id: 100, name: "Mocha" }
} else {
console.log('查询不到!')
}
// find查找
var stu2 = students.find(function (item) {
return item.id === 200
})
console.log(stu2) // {id: 200, name: 'Latte'}findIndex(): 查找到返回索引值,反之返回-1
javascript
var students = [
{ id: 100, name: 'Mocha' },
{ id: 200, name: 'Latte' },
]
var stu = students.findIndex(function (item) {
return item.id === 100
})
console.log(stu) // 0排序和反转
sort(): 谁小谁在前 - 升序;谁大谁在前 - 降序
javascript
// 基本类型排序
var nums = [1, 3, 0, 2, 99, 20, 9, 5, 10]
var sortNum = nums.sort(function (item1, item2) {
return item2 - item1
})
console.log(sortNum) // [99, 20, 10, 9, 5, 3, 2, 1, 0]
console.log(sortNum.reverse()) // [0, 1, 2, 3, 5, 9, 10, 20, 99]
// 复杂类型排序
var students = [
{ id: 100, name: 'Mocha', age: 18 },
{ id: 101, name: 'Latte', age: 17 },
{ id: 102, name: 'Cappuccino', age: 22 },
]
var sortStu = students.sort(function (item1, item2) {
return item2.age - item1.age
})
console.log(sortStu)
/*
[
{ id: 102, name: "Cappuccino", age: 22 },
{ id: 100, name: "Mocha", age: 18 },
{ id: 101, name: "Latte", age: 17 }
]
*/reverse(): 反转数组
javascript
var nums = [1, 3, 0, 2, 99, 20, 9, 5, 10]
console.log(nums.reverse()) // [10, 5, 9, 20, 99, 2, 0, 3, 1]高阶函数
forEach(): 遍历数组
javascript
var nums = [1, 3, 0, 2, 99, 20, 9, 5, 10]
nums.forEach(function (item) {
console.log(item)
})filter(): 过滤数组
javascript
var nums = [1, 3, 0, 2, 99, 20, 9, 5, 10]
var filterNum = nums.filter(function (item) {
return item % 2 === 0
})map(): 映射数组
javascript
var nums = [1, 3, 0, 2, 99, 20, 9, 5, 10]
var mapNums = nums.map(function (item) {
return item ** 2
})reduce(): 累加数组
javascript
var nums = [1, 3, 0, 2, 99, 20, 9, 5, 10]
var reduceNums = nums.reduce(function (preValue, item) {
return preValue + item
}, 0)
console.log(reduceNums)- 综合练习
- 过滤所有偶数,映射所有偶数的平方然后求和
javascript
var nums = [1, 5, 10, 8, 15, 20]
var totalNums = nums
.filter(function (item) {
return item % 2 === 0
})
.map(function (item) {
return item ** 2
})
.reduce(function (preValue, item) {
return preValue + item
}, 0)
console.log(totalNums) // 564二、Date 类型
术语: GMT(某个时区的时间);UTC(标准的时间)
创建 Date 对象的方式
- 无传参,获取当前时间
javascript
var date1 = new Date()
console.log(date1) // Sun Apr 30 2023 08:00:00 GMT+0800 (中国标准时间)- 有传参,时间字符串
javascript
var date = new Date('2023-04-30')
console.log(date) // Sun Apr 30 2023 08:00:00 GMT+0800 (中国标准时间)- 传入具体的年月日时分秒毫秒
javascript
var date = new Date(2023, 03, 30, 18, 00, 00, 111)
console.log(date) // Sun Apr 30 2023 18:00:00 GMT+0800 (中国标准时间)- 传入 Unix 时间戳:是个整数值,表示自 1970 年 1 月 1 日 00:00:00UTC 以来的毫秒数,1s -> 1000ms
javascript
var date = new Date(1000)
console.log(date) // Thu Jan 01 1970 08:00:01 GMT+0800 (中国标准时间)日期的表示方式
RFC 2822 标准
- 默认的时间格式就是 RFC2822 标准, new Date()
ISO 8610 标准
- new Date().toISOString()
RFC 转 ISO
YYYY:年份,0000~9999MM:月份,01-12DD:日,01~31T:分割日期和时间,没有特殊含义,可以省略HH:小时,00~24mm:分钟,00~59ss:秒,00~59sss:毫秒Z:时区
javascript
var date = new Date()
console.log(date) // Tue Apr 18 2023 17:33:18 GMT+0800 (中国标准时间)
console.log(date.toISOString()) // 2023-04-18T09:33:53.859Z获取所需要的时间信息
(Date 对象获取)
getFullYear:获取年份(4 位数)getMonth:获取月份,从 0 到 11getDate:获取当月的具体日期,从 1 到 31getHours:获取小时getMinutes:获取分钟getSeconds:获取秒钟getMilliSeconds:获取毫秒getDay:获取一周的第几天,从 0(星期天)开始到 6(星期六)
javascript
var date = new Date()
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = date.getHours()
var minute = date.getMinutes()
var second = date.getSeconds()
var weekday = date.getDay()
console.log(year, month, day, hour, minute, second, weekday)设置时间信息
(Date 对象设置)- 不常用
- setFullYear:设置年份(4 位数)
javascript
var date = new Date()
date.setFullYear('2024')
console.log(date)Date 对象转成时间戳
- 获取当前时间戳
javascript
var timestamp1 = Date.now()
console.log(timestamp1)getTime()转成时间戳
javascript
var date1 = new Date()
var date2 = new Date('2023-04-18')
var timestamp1 = date1.getTime()
var timestamp2 = date2.getTime()
console.log(timestamp1, timestamp2)valueOf()转成时间戳
javascript
var date1 = new Date()
var date2 = new Date('2023-04-18')
var timestamp1 = date1.valueOf()
var timestamp2 = date2.valueOf()
console.log(timestamp1, timestamp2)+date转成时间戳
javascript
var date1 = new Date()
var date2 = new Date('2023-04-18')
console.log(+date1)
console.log(+date2)案例练习
javascript
var startTime = Date.now()
for (var i = 0; i < 100000; i++) {
console.log(i)
}
var endTime = Date.now()
console.log((endTime - startTime) / 1000 + '秒')补充
将字符串时间转为时间戳的另一种方式:Date.parse(str);
作用等同于new Date(dateString).getTime();
需要符合 RFC2822 或者 ISO8601 日期格式的字符串,比如 YYYY-MM-DDTHH:mm:ss.sssZ;
其他格式不能保证一定正常输出;如果输入的格式不能被解析,就会返回 NaN。
javascript
var timeString = '2033-03-23'
console.log(Date.parse(timeString)) // 1995148800000