内置对象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,堆栈,简单数据复杂数据类型

JavaScript 06 内置对象Math,Date,Array

JavaScript内置对象

内置对象练习