JavaScript常用的内置对象

  • >>、前言
  • 一、查阅MDN文档
  • 二、Math对象的使用
  • 三、Date对象的使用
  • 四、数组对象的使用
  • 4.1 数组的创建
  • 4.2 检测是否为数组
  • 4.3 添加数组元素
  • 4.4 删除数组元素
  • 4.5 splice() 方法
  • 4.6 reverse() 方法
  • 4.7 sort() 方法
  • 4.8 indexOf() 方法跟lastIndexOf() 方法
  • 4.9 数组转换成字符串
  • 五、字符串对象的使用
  • 5.1 charCodeAt() 方法
  • 5.2 charAt() 方法
  • 5.3 字符串的拼接、截取、替换
  • 5.4 字符串转换成数组
  • 5.5 字符串大小写转换


>>、前言

1.JavaScript中,对象分为三种:自定义对象、内置对象、浏览器对象(属于JS中独有的);

2.内置对象最大的优点就是帮助我们快速开发;

3.在JavaScript中,常用的内置对象有:Math、Date、Array、String…。

一、查阅MDN文档

点击查看MDN文档

🤝自己学会查文档,比什么都强,授人以鱼不如授人以渔。

二、Math对象的使用

Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。

// 圆周率
console.log(Math.PI); // 3.141592653589793
// max() 求最大值
console.log(Math.max(1, 5, 3, 9, -2)); // 9
console.log(Math.max()); // -Infinity
console.log(Math.max(1, 5, '最大值', 3)); // NaN
// min() 求最小值
// ...(使用方法跟max()的使用方法一样)
// abs() 求绝对值
console.log(Math.abs(-1)); // 1
console.log(Math.abs(1)); // 1
console.log(Math.abs('1')); // 1 隐式转
console.log(Math.abs('绝对值')); // NaN
// floor() 向下取整
console.log(Math.floor(1.1)); // 1
console.log(Math.floor(1.9)); // 1
// ceil() 向上取整
console.log(Math.ceil(1.1)); // 2
console.log(Math.ceil(1.9)); // 2
// round() 四舍五入 特殊点:其他数字都是按照四舍五入来计算,n.5会往大的方向取
console.log(Math.round(1.1)); // 1
console.log(Math.round(1.5)); // 2
console.log(Math.round(1.9)); // 2
console.log(Math.round(-1.1)); // -1
// -1会比-2大,所以-1.5取的是-1
console.log(Math.round(-1.5)); // -1 *特殊  <————(-2)——(-1.5)——(-1)————
console.log(Math.round(-1.9)); // -2
// random() 取随机数
console.log(Math.random()); // 返回一个随机小数 范围:[0,1)

// 取规定范围之间的随机数 [min, max]  公式:Math.floor(Math.random() * (max - min + 1)) + min
// random():取[0,1)之间的随机数; floor():向下取整,保证数值,不超过范围。
// (max - min + 1):控制值小于(有可能等于)max值;  (+ min):控制值大于(有可能等于)min值。
// 如果需要小于(不等于)max值的话,只需去掉 + 1。
// 例如取[2, 5]之间的随机整数 
console.log(Math.floor(Math.random() * (5 - 2 + 1)) + 2);

三、Date对象的使用

:Date() 日期对象,是一个构造函数,创建一个新Date对象的唯一方法是通过new 操作符,例如:let now = new Date();若将它作为常规函数调用(即不加 new 操作符),将返回一个字符串,而非 Date 对象。

var date = new Date();
console.log(date.getFullYear()); // 得到当前年份
console.log(date.getMonth() + 1); // *得到上一月份[0~11]['一月',...,'十二月'],需要+1,才能得到当前月份
console.log(date.getDate()); // 得到当前的几号
console.log(date.getDay()); // *得到当前的星期[0~6]['星期日',...,'星期六']
var date = new Date();
console.log(date.getHours()); // 得到当前小时
console.log(date.getMinutes()); // 得到当前分钟
console.log(date.getSeconds()); // 得到当前秒数
var date = new Date();
// 获取时间戳  时间戳记录的是距离1970年1月1日上午8点整 过了多少毫秒数
// 第一种,通过valueOf()、getTime()获取
console.log(date.valueOf());
console.log(date.getTime());
// 第二种,最简单,也是最常用的写法
console.log(+new Date());
console.log(+new Date('2021-1-12 12:00:00')); // 获取指定时间的时间戳
// 第三种,是H5新增的写法
console.log(Date.now());

四、数组对象的使用

4.1 数组的创建

// 第一种,直接创建数组
var arr1 = []; // 创建一个空数组

// 第二种,通过new Array()创建数组
var arr2 = new Array(); // 创建一个空数组
var arr3 = new Array(2); // 创建了一个长度为2的数组,里面为两个空数组元素
var arr4 = new Array(2, 3, 4); // 创建了一个数组,里面有2,3,4三个数组元素

// 打印
console.log(arr1); // []
console.log(arr2); // []
console.log(arr3.length); // 2
console.log(arr4); // [2, 3, 4]

4.2 检测是否为数组

// 检测是否为数组 (instanceof & Array.isArray)
// 当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测iframes.
// 第一种,通过 instanceof 运算符
var a = [];
var b = {};
console.log(a instanceof Array); // true
console.log(b instanceof Array); // false
// 第二种,通过Array.isArray(参数)
console.log(Array.isArray(a)); // true
console.log(Array.isArray(b)); // false

4.3 添加数组元素

// 添加数组元素
arr1 = [1, 2, 3];
arr2 = ['虎', '兔', '龙'];
// 第一种,push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度(该方法修改原有数组)。
var l1 = arr1.push(4); // 向arr1数组中,添加一个4元素
console.log(arr1); // [1, 2, 3, 4] 返回添加后的数组
console.log(l1); // 4 返回添加之后的长度
// 第二种,unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
var l2 = arr2.unshift('牛');
console.log(arr2);  // ["牛", "虎", "兔", "龙"] 返回添加后的数组
console.log(l2); // 4 返回添加之后的长度

4.4 删除数组元素

// 删除数组元素
arr1 = [1, 2, 3, 4];
arr2 = ['牛', '虎', '兔', '龙'];
// pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
var v1 = arr1.pop(); // 删除数组最后一个元素
console.log(arr1);
console.log(v1); // 返回删除的值
// shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
var v2 = arr2.shift(); // 删除数组第一个元素
console.log(arr2);
console.log(v2); // 返回删除的值

4.5 splice() 方法

// splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
arr = [2016, 2018, 2005, 2012, 2003, 2001, 2007];
// start:从第几个开始(索引);
// deleteCount:删除几个元素;
// item:插入item元素;
// var removed = arr.splice(start[, deleteCount[, item1[, item2[, ...]]]])
var removed = arr.splice(2, 1, 2011); // 从第2位开始,删除1个元素,插入2011;
console.log(arr); // [2016, 2018, 2011, 2012, 2003, 2001, 2007]
console.log(removed); // [2005] 以数组形式返回被修改内容,如果没有删除元素的话,则返回空数组;

4.6 reverse() 方法

// reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
arr = [3, 2, 23, 54, 12, 31, 73, 90];
// 数组反转]
console.log(arr.reverse());

4.7 sort() 方法

: 语法:arr.sort([compareFunction]),如果没有指明 compareFunction ,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序。

// sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的
arr = [3, 2, 23, 54, 12, 31, 73, 90];
var new_arr = arr.sort(function (a, b) {
    return a - b; // 升序排列
    // return b - a; // 降序排列
})
console.log(new_arr);

4.8 indexOf() 方法跟lastIndexOf() 方法

  • arr.indexOf(searchElement[, fromIndex])
  • searchElement:要查找的元素
  • fromIndex:开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。
  • 结合数组去重的案例来讲
// indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
// 案例:数组去重,给old_arr数组去重
old_arr = [1, 3, 5, 6, 7, 8, 3, 2, 4, 6, 2, 3, 5];
new_arr = [];
for (var i = 0; i < old_arr.length; i++) {
    if(new_arr.indexOf(old_arr[i]) == -1){
        new_arr.push(old_arr[i])
    }
}
console.log(old_arr);
console.log(new_arr);
// lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。(跟indexOf() 方法,一个是从开头开始查找元素,一个是从末尾开始查找元素)

4.9 数组转换成字符串

// toString() 方法 & join() 方法
arr = ['hello', 'my', 'name', 'is', 'King'];
// toString() 返回一个字符串,表示指定的数组及其元素。
var str_toString = arr.toString();
console.log(str_toString); // hello,my,name,is,King
// join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
var str_join = arr.join(' '); // 默认逗号分隔符
console.log(str_join);

五、字符串对象的使用

5.1 charCodeAt() 方法

// charCodeAt() 方法返回 0 到 65535 之间的整数,表示给定索引处的 UTF-16 代码单元
// 指定 index 处字符的 UTF-16 代码单元值的一个数字;如果 index 超出范围,charCodeAt() 返回 NaN。
var str_word = 'Admin';
var v = str_word.charCodeAt(0);
console.log(v); // 65

// 扩展
// str[index]  H5新增的
var str_word = 'Admin'
var v = str_word[0]
console.log(v);

5.2 charAt() 方法

  • 结合案例,从下面str_word字符串中,找出出现次数最多的字母,出现了几次?
// charAt() 方法从一个字符串中返回指定的字符。
// 语法:str.charAt(index);如果没有提供索引,charAt() 将使用0。
// 案例:从下面str_word字符串中,找出出现次数最多的字母,出现了几次?
var str_word = 'abcoefoxyozzopp';
var dct = {};
for (var key in str_word) {
    var char_str = str_word.charAt(key); // 返回值是索引对应的字符
    if (dct[char_str]) {
        dct[char_str]++;
    } else {
        dct[char_str] = 1;
    }
}
console.log(dct);
var max = 0;
var letter = '';
for (var key in dct) {
    if (dct[key] > max) {
        max = dct[key];
        letter = key;
    }
}
console.log('出现最多次数的字母为:‘ ' + letter + ' ’,共出现了:' + max + '次');

5.3 字符串的拼接、截取、替换

  • 字符串的拼接
// concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
// 语法:str.concat(str2, [, ...strN])
var str1 = 'hello';
var str2 = 'word';
var new_str = str1.concat(str2);
console.log(new_str); // 返回新的字符串
  • 字符串的截取
// substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符。
// 语法:str.substr(start[, length]); 从(start)第几个开始取,取(length)几个字符
var str = '我叫King';
var name = str.substr(2, 4);
console.log(name); // King 返回截取的部分
  • 字符串的替换
// replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果pattern是字符串,则仅替换第一个匹配项。
// 语法:str.replace(regexp|substr, newSubStr|function)
var str = '我叫King';
var new_str = str.replace('King', '开心果'); // 将King更改为开心果, 只替换匹配的第一个
console.log(new_str); // 我叫开心果 返回新的字符串

5.4 字符串转换成数组

// split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。 
var str = '1-2-3-4-5';
var arr = str.split('-'); // 以 - 进行分割str字符串
console.log(arr); // ["1", "2", "3", "4", "5"] 返回源字符串以分隔符出现位置分隔而成的一个 Array

5.5 字符串大小写转换

// toUpperCase() 方法将调用该方法的字符串转为大写形式并返回(如果调用该方法的值不是字符串类型会被强制转换)。
var str1 = 'hello, word';
var U_str = str1.toUpperCase();
console.log(U_str); // HELLO, WORD
// toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回。
var str2 = 'HELLO, WORD';
var L_str = str2.toLowerCase();
console.log(L_str); // 'hello, word'