| 方法名 | 对应版本 | 功能 | 原数组是否改变 | 返回值 |
|---|---|---|---|---|
concat | ES5- | 合并数组 | N | 合并之后的新数组 |
join | ES5- | 使用分隔符 | N | 组成的字符串 |
push | ES5- | 在最后一位新增一或多个元素 | Y | 返回长度 |
pop | ES5- | 删除最后一位 | Y | 删除的元素 |
unshift | ES5- | 在第一位新增一或多个元素 | Y | 返回长度 |
shift | ES5- | 删除第一位 | Y | 删除的元素 |
reverse | ES5- | 反转数组 | Y | 返回反转结果 |
slice | ES5- | 截取指定位置的数组 | N | 返回一个从开始到结束(不包括结束)选择的数组的浅拷贝到一个新数组对象 |
splice | ES5- | 删除指定位置,并替换 | Y | 返回删除的数据 |
sort | ES5- | 排序(字符规则) | Y | 返回排序后的结果 |
toString | ES5- | 直接转为字符串,并返回 | N | 返回转换字符串 |
valueOf | ES5- | 返回数组对象的原始值 | N | 返回数组对象的原始值 |
indexOf | ES5 | 查询并返回数据的索引 | N | 查询并返回数据的索引 |
lastIndexOf | ES5 | 反向查询并返回数据的索引 | N | 反向查询并返回数据的索引 |
forEach | ES5 | 参数为回调函数,会遍历数组所有的项,回调函数接受三个参数,分别为value,index,self;forEach没有返回值 | N | 无 |
map | ES5 | 同forEach,同时回调函数返回数据,组成新数组由map返回 | N | 组成新数组由map返回 |
filter | ES5 | 同forEach,同时回调函数返回布尔值,为true的数据组成新数组由filter返回 | N | 返回新数组 |
every | ES5 | 同forEach,同时回调函数返回布尔值,全部为true,由every返回true | N | 返回Boolen |
some | ES5 | 同forEach,同时回调函数返回布尔值,只要由一个为true,由some返回true | N | 返回Boolen |
reduce | ES5 | 归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduce返回 | N | 返回归并值` |
reduceRight | ES5 | 反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回 | N | 返回归并值` |
includes | ES7 | 查找数组是否包含某个元素 | N | 返回Boolen |
find | ES6 | 用于找出第一个符合条件的数组成员 | N | 返回该成员,如果没有符合条件的成员,则返回undefined |
findIndex | ES6 | 用于找出第一个符合条件的数组成员 | N | 返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1 |
keys | ES6 | 用于遍历数组 | N | 返回一个遍历器对象,可以用for...of循环进行遍历,对键名的遍历 |
values | ES6 | 用于遍历数组 | N | 返回一个遍历器对象,可以用for...of循环进行遍历,对键值的遍历 |
entries | ES6 | 用于遍历数组 | N | 返回一个遍历器对象,可以用for...of循环进行遍历,对键值对的遍历 |
注意: object对象keys(), values(), entries()
1. Object.keys()
ES5 引入了
Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名, 返回值: 数组
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
var obj1 = {'name': 'lucas', 'age': 22};
console.log(Object.keys(obj1)) // ['name', 'age']
2. Object.values()
ES2017 引入了跟
Object.keys配套的Object.values和Object.entries,作为遍历一个对象的补充手段,供for...of循环使用, 因为其他遍历方法比如for in只能通过obj[key]的方式拿到对象的键值,ES7可通过Object.values(obj)拿到对象的键值
let obj = { a: 1, b: 2, c: 3 };
for (let value of Object.values(obj)) {
console.log(value); // 1, 2, 3
}
var obj1 = {'name': 'lucas',age: 22};
console.log(Object.values(obj1)) // ['lucas', 22]
3. Object.entries()
Object.entries()和Object.keys相关,不过entries()函数会将key和value以数组的形式都返回。这样,使用循环或则将对象转为 Map 就很方便了
let obj = { a: 1, b: 2, c: 3 };
for (let [key, value] of Object.entries(obj)) {
console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3]
}
var obj1 = {"name":"lucas",age:22};
console.log(Object.entries(obj1)) // ['name', 'lucas'] ['age', 22]
Object.entries 和 Array reduce混用 十进制数字转罗马数字
/**
* @param {number} num
* @return {string}
*/
var intToRoman = function(num) {
// 定义出罗马对应数字
const map = {
M: 1000,
CM: 900,
D: 500,
CD: 400,
C: 100,
XC: 90,
L: 50,
XL: 40,
X: 10,
IX: 9,
V: 5,
IV: 4,
I: 1
};
// 利用js Object.entries(map) 转换成: [['M', 1000], ['CM': 900]] 这样格式
// 这是一个知识点
// 再利用数组reduce方法累加
return Object.entries(map).reduce((resut, [letter, n]) => {
// letter.repeat 字符循环几次
resut += letter.repeat(Math.floor(num / n));
num %= n;
return resut;
}, '');
};