数组、对象及其他常用js方法

71 阅读2分钟

数组方法

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()

1724313035582.png

  1. 对于空数组是不会执行回调函数的
  2. 对于已在迭代过程中删除的元素,或者空元素会跳过回调函数
  3. 遍历次数再第一次循环前就会确定,再添加到数组中的元素不会被遍历。
  4. 如果已经存在的值被改变,则传递给 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
}