标准库(标准API)
- 库:liberary
- API:应用程序编程接口,Application Programing Interface
- 标准:ECMAScript标准
Object
静态成员
- keys(某个对象),得到某个对象的所有属性名数组
- values(某个对象),得到某个对象的所有属性值数组
- entries(某个对象),得到某个对象的所有属性名和属性值的数组
实例成员
实例成员可以被重写
所有对象,都拥有Object的所有实例成员
- toString方法:得到某个对象的字符串格式
默认情况下,该方法返回"[object Object]";
- valueOf方法:得到某个对象的值
默认情况下,返回该对象本身
在JS中,当自动的进行类型转换时,如果要对一个对象进行转换,实际上是先调用对象的valueOf方法,然后调用返回结果的toString方法,将得到的结果进行进一步转换。
Function
所有函数都具有Function中的实例成员
语法:arguments:在函数中使用,获取该函数调用时,传递的所有参数
arguments是一个类数组(也称为伪数组:没有通过Array构造函数创建的类似于数组结构的对象),伪数组会缺少大量的数组实例方法
arguments数组中的值,会与对应的形参映射
实例成员
- length属性,得到函数形参数量
- apply方法:调用函数,同时指定函数中的this指向,参数以数组传递
- call方法:调用函数,同时指定函数中的this指向,参数以列表传递
- bind方法:得到一个新函数,该函数中的this始终指向指定的值。
通常,可以利用apply、call方法,将某个伪数组转换伪真数组。
Array构造器
凡是通过Array构造函数创建的对象,都是数组
静态成员
- from方法:可以将一个伪数组转换为真数组
- isArray方法:判断一个给定的数据,是否为一个真数组
- of方法:类似于中括号创建数组,依次赋予数组每一项的值
实例成员
- fill方法:用某个数据填充数组
- pop: 删除数组中的最后一个元素,并返回
- push:添加元素到数组的末尾
- reverse:将当前数组颠倒顺序
- shift:删除数组最前面(头部)的元素
- sort:对数组进行排序
- splice:通过索引删除某个元素
- unshift:添加元素到数组的头部
//从一个索引位置删除多个元素
var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
console.log(vegetables);
// ["Cabbage", "Turnip", "Radish", "Carrot"]
var pos = 1, n = 2;
var removedItems = vegetables.splice(pos, n);
// this is how to remove items, n defines the number of items to be removed,
// from that position(pos) onward to the end of array.
console.log(vegetables);
// ["Cabbage", "Carrot"] (the original array is changed)
console.log(removedItems);
// ["Turnip", "Radish"]
纯函数、无副作用函数:不会导致当前对象发生改变
- concat:返回一个由当前数组和其它若干个数组或者若干个非数组值组合而成的新数组。
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var arr3 = [7, 8, 9];
var newArr = arr1.concat(arr2, arr3);
console.log(newArr);
//结果:
// 0: 1
// 1: 2
// 2: 3
// 3: 4
// 4: 5
// 5: 6
// 6: 7
// 7: 8
// 8: 9
// length: 9
- includes: 数组中是否包含满足条件的元素
- join:连接所有数组元素组成一个字符串。
- slice:抽取当前数组中的一段元素组合成一个新数组。
- indexOf:返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1。
- lastIndexOf:返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1。
- forEach: 遍历数组
- every:是否所有元素都满足条件
- some:是否至少有一个元素满足条件
- filter:过滤,得到满足条件的元素组成的新数组
- find: 查找第一个满足条件的元素,返回元素本身,如果没有找到,返回undefined
- findIndex: 查找第一个满足条件的元素,返回元素的下标
- map:映射,将数组的每一项映射称为另外一项
- reduce:统计,累计
// 链式编程:每一个函数调用返回的类型一致
var arr = [22, 33, 44, 55, 66, 77, 88];
// 先对数组进行随机排序
// 只取及格的分数
// 得到学生对象的数组(每个学生对象包含姓名和分数)
var result = arr.sort(function() {
return Math.random() - 0.5;
}).filter(function(item) {
return item >= 60;
}).map(function(item, i) {
return {
name: `学生${i+1}`,
score: item
}
});
console.log(result);
var arr = [1, 2, 3, 4, 5, 6, -1, -2, -3, -4, -5, -6];
// 去掉数组中的负数, 然后对每一项平方, 然后再对每一项翻倍, 然后求和
// 不许使用循环
var result = arr.filter(function(item) {
return item >= 0;
}).map(function(item) {
return item ** 2;
}).map(function(item) {
return item * 2;
}).reduce(function(s, item) {
return s + item;
}, 0);
console.log(result);