实现数值插入
[1, 2, 3, 4, 6] 插入3.5
二分法
var append = (arr, val) => {let i = 0let j = arr.length - 1let ans = jwhile(i < j) {// 加上起始坐标,才是真正中间坐标let pivot = ~~((j - i) / 2) + iif (arr[pivot] >= val) {j = pivot - 1ans = pivot} else {i = pivot + 1}}return ans}var a = append([1,2,3,4,5], 3.5)console.log(a)
实现newOperator
先知道new发生了什么,通过构造函数产生一个新的实例,
那new和构造函数关系是什么
function newOperator(fn) {let newObj = Object.create(fn.prototype)let args = [].slice.call(arguments, 1)let res = fn.apply(newObj, args)if ((typeof fn === 'object' && fn !== null) || typeof fn === 'function') {return res} else {return newObj}}
