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;