美文网首页
Array内置属性和方法整理

Array内置属性和方法整理

作者: 梦行乌托邦 | 来源:发表于2020-07-03 14:34 被阅读0次
img1
  • entries、values、keys
    entries返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。values只包含值,keys只包含键
var arr = ["a", "b", "c"];
var iterator = arr.entries();
for (let e of iterator) {
    console.log(e);
}
// [0, "a"] 
// [1, "b"] 
// [2, "c"]
  • flat、flatMap
    flat: 按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

array.flat([depth])
depth: 指定要提取嵌套数组的结构深度,默认值为1

var arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11]]]];
var arrNew = arr.flat(2); // 原数组不变,返回新数组[1,2,3,4,5,6,7,8,9,[10,11]]

flat会移除数组中的空项。
flatMap:首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与map连着深度值为1的flat几乎相同,但flatMap通常在合并成一种方法的效率稍微高一些。

arr.flatMap(function callback(currentValue[, index[, array]]){}[, thisArg])
callback: 可以生成一个新数组中的元素的函数,可以传入三个参数:
- currentValue:当前正在数组中处理的元素
- index: 可选,数组中正在处理的当前元素的索引
- array: 可选,被调用的map数组
thisArag: 可选,执行callback函数时使用的this值

var arr1 = [1, 2, 3, 4];
arr1.map(x => [x * 2]); // [[2], [4], [6], [8]]
arr1.flatMap(x => [x * 2]); // [2, 4, 6, 8]
  • [Symbol.iterator]
    Array.prototype.values 是 Array.prototype[Symbol.iterator] 的默认实现。

array[Symbol.iterator]()

var arr = ['a', 'b', 'c', 'd', 'e'];
var eArr = arr[Symbol.iterator]();
for (let letter of eArr) {
  console.log(letter); // a b c d e
}

var arr = ['a', 'b', 'c', 'd', 'e'];
var eArr = arr[Symbol.iterator]();
console.log(eArr.next().value); // a
console.log(eArr.next().value); // b
console.log(eArr.next().value); // c
console.log(eArr.next().value); // d
console.log(eArr.next().value); // e
  • reduce、reduceRight
    reduce: 对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
callback: 执行数组中的每个值(如果没有提供initialValue则第一个值除外)的函数,包含四个参数:

  • accumulator: 累计器累计回调的返回值
  • currentValue: 数组正在处理的元素
  • index: 可选,数组正在处理的元素的索引,如果提供了initialValue,则起始索引号为0,否则从1开始
  • array: 调用reduce的数组
    initialValue: 作为第一次调用callback函数时的第一个参数(accumulator)的初始值

如果数组为空且没有提供initialValue,会抛出TypeError。

var maxCallback = ( acc, cur ) => Math.max( acc.x, cur.x );
var maxCallback2 = ( max, cur ) => Math.max( max, cur );

// reduce() 没有初始值
[ { x: 2 }, { x: 22 }, { x: 42 } ].reduce( maxCallback ); // NaN
[ { x: 2 }, { x: 22 }            ].reduce( maxCallback ); // 22
[ { x: 2 }                       ].reduce( maxCallback ); // { x: 2 }
[                                ].reduce( maxCallback ); // TypeError

// map/reduce; 这是更好的方案,即使传入空数组或更大数组也可正常执行
[ { x: 22 }, { x: 42 } ].map( el => el.x )
                        .reduce( maxCallback2, -Infinity ); // 42

reduceRight: 与reduce类似,区别在于它是从右到左。

  • copyWithin
    从数组的指定位置拷贝元素到数组的另一个指定位置中

array.copyWithin(target, start, end)
target: 复制到指定目标索引位置
start: 元素复制的起始位置
end:可选。停止复制的索引位置,默认为array.length,如果为负数,则倒数

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.copyWithin(2, 0);  // ["Banana", "Orange", "Banana", "Orange"]

\color{red}{ Array上有bind、apply、call、caller、arguments这些方法, }
\color{red}{ 但没有使用场景?这个在我们了解了Function、Object之后看是否有答案 }

相关文章

  • Array内置属性和方法整理

    entries、values、keysentries返回一个新的Array Iterator对象,该对象包含数组中...

  • js内置对象属性方法总结

    一:Array内置对象 属性 var test=new Array(); 方法 var arr1 = [1,2,3...

  • 关于构造函数Array属性和方法总结

    @(JavaScript基础) 关于构造函数Array属性和方法总结 构造函数Array属性: Array.len...

  • javaScript的内置对象以及一些常用的方法

    JS内置对象: String对象:字符串对象,提供了对字符串进行操作的属性和方法。Array对象:数组对象,提供了...

  • 类的内置方法与属性

    python中的类在定义时就包含了一系列的专有方法和内置属性,这些内置的属性和方法在操作类时非常便利 内置属性 _...

  • 2018-09-07-类和对象

    一、内置类属性(魔法属性) 内置类属性就是魔法属性魔法属性:属性名的前面和后面都有两个下划线魔法方法:方法的前面和...

  • 面向对象基本语法

    目标 ●dir内置函数●定义简单的类(只包含方法)●方法中的self函数●初始化方法●内置方法和属性 01.内置函...

  • 数组的方法

    数组的方法 JavaScript Array对象的属性和方法 : https://...

  • Day15—类和对象2

    1 内置类属性 内置类属性就是魔法属性魔法属性:属性名的前面和后面都有两个下划线。魔法方法:方法的前后都有两个下划...

  • 2018-09-07类和对象2(day15)

    一、内置类属性 内置类属性就是魔法属性 魔法属性:属性名的前面和后面都有两个下划线 魔法方法:方法的前后都有两个下...

网友评论

      本文标题:Array内置属性和方法整理

      本文链接:https://www.haomeiwen.com/subject/jiyufktx.html