内置对象Math,Array,String,Date,堆栈,简单数据复杂数据类型
Posted article-record
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内置对象Math,Array,String,Date,堆栈,简单数据复杂数据类型相关的知识,希望对你有一定的参考价值。
javascript 内置对象
Math
Math.PI; // 返回圆周率
Math.max(1, 2); // 返回最大值,非数字返回NaN, 空返回 -infinity
Math.min(1, 2); // 返回最小值,非数字返回NaN, 空返回 infinity
Math.abs(1); // 绝对值 字符串型数字会隐式转换,非数字返回 NaN
Math.floor(1.9); // 向下取整;
Math.ceil(1.1); // 向上取整;
Math.round(1.5); // 四舍五入;
Math.random(); // 随机数 0~1 不包含1
// 案例 任意两个数之间的随机值,包含最大值
function getRandom(max, min) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
Date
// date 是构造函数 要通过new来创建实例
var date = new Date(); // 默认输出当前系统时间 2020-03-25T14:45:05.347Z
var date = new Date(‘2019-10-1 8:8:8‘) // 可以设置时间注意格式 2019-10-01T00:08:08.000Z
方法 | 说明 |
---|---|
getFullYear(); |
获取当前年 |
getMonth(); |
获取当前月(0 - 11) |
getDate(); |
获取当前日 |
getDay(); |
获取当前 星期(星期天 0) |
getHours(); |
获取当前小时 |
getMinutes(); |
获取当前分钟 |
getSeconds(); |
获取当前秒 |
获取时间戳
var date = new Date();
date.valueOf();
date.getTime();
// 简单写法
var date1 = +new Date();
// H5 新增方法
Date.now();
Array
检测是否为数组
var arr = [];
console.log(arr instanceof Array); // true false
console.log(Array.isArray(arr)); // true false H5 新增 IE9+
添加删除数组元素
方法名 | 说明 | 返回值 |
---|---|---|
arr.push(1, 2); |
末尾添加一个或多个元素,修改原数组 | 返回新的长度 |
arr.pop(); |
末尾删除一个元素,修改原数组 | 返回被删除的元素 |
arr.unshift(1, 2); |
开头添加一个或多个元素,修改原数组 | 返回新的长度 |
arr.shift(); |
开头删除一个元素,修改原数组 | 返回第一个被删除的元素 |
数组排序方法
方法 | 说明 | 返回值 |
---|---|---|
reverse(); |
翻转数组 | 已经翻转完成的数组 |
sort(); |
数组排序,但是如果碰到2位数以上的元素需要特殊处理 | 已经排序完成的数组 |
// **以上两个方法会修改原数组**
var arr = [13, 44, 2, 1, 0];
arr.sort(function (a, b) {
// return a - b; // 升序排列
return b - a; // 降序排列
});
数组索引方法
方法名 | 说明 | 返回值 |
---|---|---|
indexOf(); |
数组中查找给定元素的第一个索引 | 如果存在返回索引号,不存在返回 -1 |
lastIndexOf(); |
在数组中的最后一个索引 | 如果存在返回索引号,不存在返回 -1 |
var arr = [‘pink‘, ‘red‘, ‘bule‘, ‘red‘];
console.log(indexOf(‘red‘)); // 1 从前面开始找只找一个
console.log(lastIndexOf(‘red‘)); // 3
// 数组去重
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
数组转换为字符串
方法名 | 说明 | 返回值 |
---|---|---|
arr.toString(); |
把数组转换为字符串,逗号分隔每一项 | 返回一个字符串 |
arr.join(分隔符); |
用于把数组中所有元素转换为一个字符串 | 返回一个字符串 |
方法名 | 说明 | 返回值 |
---|---|---|
concat(); |
连接两个或多个数组 不影响元素组 | 返回一个新数组 |
slice(); |
数组截取slice(begin, end) | 返回被截取项目的新数组 |
splice(); |
数组删除 splice(第几个开始,要删除的个数) | 返回被删除项目的新数组,会影响原数组 |
var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];
var nums = num1.concat(num2, num3); // [1, 2, 3 ... 8, 9];
num1.splice(0, 3); // []
num1.slice(0, 2); // 返回值为新数组,num1未改变
字符串对象
基本包装类型,String Number Boolean
基本包装类型就是把简单的数据类型包装成复杂性属性类型,这样基本数据类型就有了属性和方法
var str = ‘hello‘;
// 等价于
// 创建临时变量把简单数据类型进行包装
var temp = new String(‘hello‘);
// 赋值给我们声明的字符变量
str = temp;
// 销毁临时变量
temp = null;
字符串的不可变性 字符串的重新赋值,只是改变了内存地址,原来的值并没有被删除
返回当前字符的位置
方法名 | 说明 | 返回值 |
---|---|---|
indexOf(); |
数组中查找给定元素的第一个索引 | 如果存在返回索引号,不存在返回 -1 |
lastIndexOf(); |
在数组中的最后一个索引 | 如果存在返回索引号,不存在返回 -1 |
console.log(str.indexOf(‘2‘, 0)); // 第二个参数是从什么位置开始找(索引号)
// 案例 统计字符出现的次数以及位置
var str = ‘sdfs-dfsf-sdfsf-sdfs-fsdf-sdfs-dfs-dfs-dfs-df‘;
var index = str.indexOf(‘-‘);
var count = 0;
while (index !== -1) {
console.log(‘索引‘ + index);
count++;
index = str.indexOf(‘-‘, index + 1);
}
console.log(count);
根据位置返回字符
方法 | 说明 | 返回值 |
---|---|---|
str.charAt(index); |
返回指定位置的字符(index 索引) | str.charAt(1); |
str.charCodeAt(index); |
返回指定位置字符 ASCII码 | str.chatCodeAt(1); |
str[index] |
获取指定位置字符 | H5新增 IE8+ |
// 案例:获取字符串字符出现最大次数的值和出现次数
var str = ‘abcd-efg-hijk-lmn-opq-rst-uvwxyz-‘;
var tempObj = {};
var maxNum = 0;
var maxKey = ‘‘;
for (var i = 0; i < str.length; i++) {
var chars = str[i];
if (tempObj[chars]) {
tempObj[chars]++;
} else {
tempObj[chars] = 1;
}
}
for (var k in tempObj) {
if (tempObj[k] > maxNum) {
maxNum = tempObj[k];
maxKey = k;
}
}
console.log(‘最大值:‘ + maxKey + ‘ 出现次数:‘ + maxNum);
字符串操作方法
var str = ‘123‘;
str.concat(‘123‘, ‘123‘); // ‘123123123‘; 字符串拼接
str.substr(0, 2); // ‘12‘ 和数组 splice 方法类似
str.slice(0, 2); // 2 end 取不到和数组 slice 方法类似
str.substring(0, 2); // 与slice类似,但是不接受负值
var str = ‘andy‘;
str.replace(‘a‘, ‘b‘); // 字符串切割,只能切割第一个 dndy;
var str = ‘pnik, blue‘;
str.split(‘,‘); // 字符串转换数组 [‘pink‘, ‘blue‘];
简单数据类型和复杂数据类型
简单数据类型又叫基本数据类型或者值类型,复杂数据类型又叫引用类型
- 值类型:简单数据类型/基本数据类型,在存储变量时存储的是值本身,也叫值类型
- String Number Boolean Undefined Null(typeof 等于 Object)
- 引用类型:复杂数据类型,在存储时变量存储的仅仅是内存地址(引用),因此叫做引用数据类型
- 通过 new 关键字创建的对象(系统对象,自定义对象)Object,Array,Date 等
堆 栈
- 栈(操作系统):由操作系统自动分配释放函数的参数值,局部变量的值等;简单数据类型放到栈里;例如:声明一个变量,a = 10; 此时栈开辟内存地址 a 指向这个地址
- 堆(操作系统):存储复杂数据类型,一般由程序员分配释放,若不释放,由垃圾回收机制回收;复杂数据类型存储到堆里面;例如:声明一个数组,a = [1, 2];此时栈开辟内存,a 执行 数组的栈地址,栈地址再执行堆,真正的数组值存放在堆中;
以上是关于内置对象Math,Array,String,Date,堆栈,简单数据复杂数据类型的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript内置对象及相关练习(math对象,date对象,string对象,array对象)
JS内置对象-String对象Date日期对象Array数组对象Math对象
内置对象Math,Array,String,Date,堆栈,简单数据复杂数据类型