record

103 阅读1分钟

1. 数组的fill函数

arr.fill(value, startIndex, endIndex);

用value填充arr数组,从startIndex位置开始,endIndex结束。不包括endIndex。

eg: var arr = [1,2,3,4,5]; arr.fill(8, 2, 3); // arr=>[1, 2,8,4,5];

2. 冒泡排序

function sort(arr) {
    var len = arr.length;
    for (let i = 0; i < len - 1; i += 1) {
         for (let j = 0; j < len - i - 1; j += 1) {
            if (arr[j] > arr[j + 1]) {
               [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; // 数组解构,交换前后的值
            }
         }
    }
     return arr;

}


3. Element.scrollIntoView: 将当前元素滚动到浏览器的可视区域。参数是个对象,其中block设置滚动位置,behavior设置滚动动画。

4. document.queryCommandSupported: 测试当前环境是否支持某个命令。

   eg: document.queryCommandSupported('copy'): 测试当前环境是否支持coly功能。

5. document.execCommand: 执行某个命令。

   eg:  document.execCommand('copy'): 执行复制功能。

6. 模拟实现call, apply

     思路:将调用mycall的方法绑定到第一个参数上,然后使用该对象调用这个方法,最后删除这个对象的方法。

    function myCall(context = window) {
        context.fn = this;

        var arg = [...arguments].splice(1); // 将context后面的参数取出

        var result = content.fn(...arg);

        delete context.fn

        return results;
    }

7. 数组扁平化

  function flatten(arr) {
      return arr.reduce((pre, next) => { return pre.concat(Array.isArray(next) ? flatten(next) : next) }, [])
}

8. !!(num & 1)可以判断num的奇偶性。num | 0可以对num取整。

eg: !!(1 & 1) => true;    !!(2 &1) => false;

         1.8 | 0 => 1;   2.4 | 0 => 2;