15-数组上和对象原型上方法解析

114 阅读2分钟

数组原型上不常用的方法:

  1. every() 是检测数组上的每一个,是否满足条件,都满足返回 true,否则 false

    let ages = [12, 34, 3, 88];
    console.log(ages.every((item) => item > 8));
    
  2. entries() 返回给定对象自身可枚举属性的键值对数组[['name',23],['key',33]]

    let obj = {
      name: "23",
      key: 33,
    };
    console.log(Object.entries(obj));
    
  3. copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。但是会改变原数组

    let ages = [12, 34, { key: 2, value: "name" }, 88];
    console.log(ages.copyWithin(0, 2)); //将索引为2上的数赋给索引为0上
    console.log(ages);
    ages[0].key = 3;
    console.log(JSON.stringify(ages));
    
  4. fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

    • fill 默认有三个参数,要填充的数、起始索引 start(默认 0)、终止索引 end,一般是数组的长度 this.length(不包括)
    • 如果索引是负数,那么索引的值是 start/end + this.length,
    • 具体看 Mozilla
    console.log(ages.fill("3"));
    console.log(ages.fill(3, 1, 3));
    console.log(ages.fill(8, -3, -1));
    
  5. flat() 按照一个可指定的深度遍历数组,并将所有元素与遍历的子元素合并返回一个新的数组,默认 flat 的深度是 1

    let ages = [12, 34, { key: 2, value: "name" }, [[[88, 99]]]];
    ages.flat();
    ages.flat(2);
    
  6. flatMap()这个方法是 map 方法和 flat 方法的结合。相当于先进行map,然后再进行的flat Mozilla

    const arr2 = [
      { key: 1, value: 1 },
      { key: 2, value: 2 },
      { key: 3, value: 3 },
    ];
    
    console.log(arr2.flatMap((item) => [item.key])); //这里等同于下面的
    console.log(arr2.map((item) => [item.key]).flat());
    
  7. reduceRight()接受一个函数,函数中的参数有累加器(accumulator)和数组中的每一项(从右到左)

    const array1 = [[0, 1], [2, 3], [4, 5]].reduceRight(
    (accumulator, currentValue) => accumulator.concat(currentValue)
    );
    
     console.log(array1);
     // expected output: Array [4, 5, 2, 3, 0, 1]
    
  8. values() 返回对象上可枚举属性的值

    var obj = { foo: 'bar', baz: 42 };
    console.log(Object.values(obj)); // ['bar', 42]
    

对象原型的方法:

  1. constructor: 指向实例所属类

  2. hasOwnProperty:对象本身所带的属性,而不是原型链上默认添加的

  3. isPrototypeOf:文档 用于检查一个对象是否在另一个对象的原型链上

  4. propertyIsEnumerable:方法返回一个布尔值,表示属性是否可枚举

    const object1 = {};
    const array1 = [];
    object1.property1 = 42;
    array1[0] = 42;
    
    console.log(object1.propertyIsEnumerable('property1'));
    // expected output: true
    console.log(array1.propertyIsEnumerable(0));
    // expected output: true
    
    console.log(array1.propertyIsEnumerable('length'));
    // expected output: false
    
  5. toLocaleString

  6. toString:返回的是[object 'type'],其中type是对象的类型

    var o = new Object();
    o.toString();//[object object]
    
  7. valueOf:返回指定对象的原始值 不同对象valueOf返回值略有不同

注意点:

  1. Object.prototype.toString()与其他的类型的对象上的toString不是一样的,这是因为其他类型的数据上对toString()方法进行了改写。具体可看这篇