数组方法
1.数组的创建方法(4种)
- 字面量创建
- new Array()-----会受参数数量及类型影响
- Array.of()-----总会创建一个包含所有传入参数的数组
- Array.from()-----将可迭代对象或者类数组对象转换为数组
2.改变原数组的方法(9种)
push, pop, shift, unshift, reverse, sort, splice, copywithin, fill
3.数组遍历的方法 (13种)
forEach, map, filter, every, some, reduce, reduceRight, find, findIndex, for of, keys(), values(), entries()
- 对于空数组是不会执行回调函数的
- 对于已在迭代过程中删除的元素,或者空元素会跳过回调函数
- 遍历次数再第一次循环前就会确定,再添加到数组中的元素不会被遍历。
- 如果已经存在的值被改变,则传递给 callback 的值是遍历到他们那一刻的值。
let a = [1, 2, ,3]; // 最后第二个元素是空的,不会遍历(undefined、null会遍历)
let obj = { name: 'OBKoro1' };
let result = a.forEach(function (value, index, array) {
a[3] = '改变元素';
a.push('添加到尾端,不会被遍历')
console.log(value, 'forEach传递的第一个参数'); // 分别打印 1 ,2 ,改变元素
console.log(this.name); // OBKoro1 打印三次 this绑定在obj对象上
// break; // break会报错
return value; // return只能结束本次回调 会执行下次回调
console.log('不会执行,因为return 会执行下一次循环回调')
}, obj);
console.log(result); // 即使return了一个值,也还是返回undefined
// 回调函数也接受接头函数写法
对象方法
| 对象方法 | 遍历基本属性 | 遍历原型链 | 遍历不可枚举属性 | 遍历Symbol |
|---|---|---|---|---|
| for in | 是 | 是 | 否 | 否 |
| Object.keys() | 是 | 否 | 否 | 否 |
| Object.getOwnPropertyNames() | 是 | 否 | 是 | 否 |
| Object.getOwnPropertySymbols() | 否 | 否 | 是 | 是 |
| Reflect.ownKeys() | 是 | 否 | 是 | 是 |
数组对象去重方法
- 用对象属性记录是否存在
const obj = {};
const newArr = [];
arr.forEach((item) => { //循环遍历,判断对象属性是否为真,为假就将数据添加到新数组中
obj[item.id] ? "" : (obj[item.id] = true && newArr.push(item));
});
- 用map记录是否存在
const deduplication = (arr) => {
let result = []
let map = new Map()
arr.forEach((item) => {
if(!map.has(item.id)){
result.push(item)
map.set(item.id, true)
}
})
return result
}