来点基础函数的解析

Math

Math 对象方法

方法描述
abs(x)返回 x 的绝对值。
ceil(x)返回 x,向上舍入为最接近的整数。
exp(x)返回 Ex 的值。
floor(x)返回 x,向下舍入为最接近的整数。
log(x)返回 x 的自然对数。
max(x, y, z, ..., n)返回值最高的数字。
min(x, y, z, ..., n)返回值最小的数字。
random()返回 0 到 1 之间的随机数。
round(x)将 x 舍入为最接近的整数。
sign(x)返回数的符号(检查它是正数、负数还是零)。
trunc(x)返回数字 (x) 的整数部分。

Array

Array 属性

属性描述
constructor返回创建 Array 对象原型的函数。
length设置或返回数组中元素的数量。
prototype允许您向数组添加属性和方法。

Array 方法

方法描述
copyWithin()将数组中的数组元素复制到指定位置或从指定位置复制。
entries()返回键/值对数组迭代对象。
lastIndexOf()在数组中搜索元素,从末尾开始,并返回其位置。
reduceRight()将数组的值减为单个值(从右到左)。
reverse()反转数组中元素的顺序。
shift()删除数组的第一个元素,并返回该元素。
splice()从数组中添加/删除元素。
unshift()将新元素添加到数组的开头,并返回新的长度。

Array.prototype.flat:

js
1
2
3
4
  it('flat', () => {
    expect([1, [2], 3].flat()).toEqual([1, 2, 3]);
    expect([1, [2, [3, [4]]]].flat(Infinity)).toEqual([1, 2, 3, 4]);
  });

Array.prototype.flatMap:

js
1
2
3
4
5
it('flatMap', () => {
    expect([1, 2, 3].flatMap((x) => [x, x * 2])).toEqual([1, 2, 2, 4, 3, 6]);
    expect([1, 2, 3].flatMap(() => 4)).toEqual([4, 4, 4]);
    expect([1, 2, 3].flatMap(() => [4, 5])).toEqual([4, 5, 4, 5, 4, 5]);
  });

Array.prototype.sort

Parameters

compareFn Optional

Specifies a function that defines the sort order. If omitted, the array elements are converted to strings, then sorted according to each character's Unicode code point value.

  • a
    The first element for comparison.
  • b
    The second element for comparison.

Description

If compareFn is not supplied, all non-undefined array elements are sorted by converting them to strings and comparing strings in UTF-16 code units order. For example, "banana" comes before "cherry". In a numeric sort, 9 comes before 80, but because numbers are converted to strings, "80" comes before "9" in the Unicode order. All undefined elements are sorted to the end of the array.

compareFn(a, b) return valuesort order
> 0sort a after b
< 0sort a before b
=== 0keep original order of a and b