人生人山人海人来人往,自己自尊自爱自由|

青柠i

园龄:4年3个月粉丝:11关注:1

随笔分类 -  JavaScript

手写数组方法 reduce 和 map
摘要:1. 手写数组的 reduce 方法 Array.prototype.myReduce = function (fn, init) { if (typeof fn !== 'function') { throw new Error(`${fn} is not a function`) } // 当前
96
0
0
JS之深浅拷贝
摘要:1. 技巧性深浅拷贝 1.1 数组的浅拷贝 数组,我们可以利用数组的一些方法比如:slice、concat 返回一个新数组的特性来实现拷贝。 let arr = ['old', 1, true, null, undefined, { old: "old" }]; let new_arr = arr.
56
0
0
onChange和onInput事件的区别
摘要:1.onInput事件 onInput每次内容发生改变时触发,在用户输入时触发。 该事件在 <input> 或 <textarea> 元素的值发生改变时触发。 <!-- 例子 --> <input type="text" oninput="alert(123)" > 2.onChange事件 在元素
116
0
0
JavaScript中~和~~操作符
摘要:1. ~操作符 ~ 是JavaScript中的操作符,按二进制位取反。 其实这涉及到原码、反码、补码的知识。 原码: 原码表示法的最高位为符号位,该位为0表示正数,1表示负数。其余位表示数的绝对值。 [+1]原 = 0000 0001 [-1]原 = 1000 0001 反码: 对于一个带符号的数来
266
0
0
树和二叉树
摘要:1. 树的基本概念 如图所示,一棵树最上面的点称为根节点,如果一个节点下面连接多个节点,那么该节点成为父节点,它下面的节点称为子节点,一个节点可以有0个、1个或更多节点,没有子节点的节点叫叶子节点。 1.1 二叉树: 是一种特殊的树,即子节点最多只有两个,这个限制可以使得写出高效的插入、删除、和查找
47
0
0
动态规划
摘要:动态规划 1. 爬楼梯问题 有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法? 1.1 递归方法分析 由分析可知,假设我们只差最后一步就能走上第10级阶梯,这个时候一共有两种情况,因为每一步只允许走1级或2级阶梯, 因此分别为从8级阶梯和从
44
0
0
算法---数组排序
摘要:一、排序算法 1. 冒泡排序 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端, 最终达到完全有序。 (来自网络,侵权删) 代码实现: function mySort(arr) { // 如果不是数组或者数组长度小于等于1,直接返回,不
62
0
0
扩展运算符理解
摘要:扩展运算符 1.合并数组 // 1.合并数组 let arr1 = [1, 2, 3]; let arr2 = ["c"]; let arr3 = ["d", "e"]; // es5 合并 console.log(arr1.concat(arr2, arr3));//(6) [1, 2, 3, "
44
0
0
Symbol的简单理解
摘要:Symbol 1.Symbol 的意义 ​ 之前我们的对象属性的数据类型都是字符串,没有其他的了。所以会导致属性名重复,导致属性值被覆盖的情况。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法,在添加的操作就很容易覆盖了原有的方法。所以需要一个独一无二的数据类型来完成这个使命。所以Sy
216
0
0
ES6 解构赋值
摘要:es6对象解构 1.普通使用解构赋值 let obj = { name: "fct", age: 21 } // 普通使用解构赋值 var { name, age, hobby } = obj; console.log(name, age, hobby); //fct 21 undefined 2.
72
0
0
写一个函数去判断数据类型
摘要:判断数据类型 function judgeType(ele){ let res = typeof ele; if(res "object"){ // 短路表达式,第一个成立则返回第二个的值,第一个不成立,则返回第一个的值 Object.prototype.toString.call(ele) "[o
56
0
0
数组去重方法总结
摘要:数组去重 let arr = [{ name: "fct" }, { name: "fct" }, 1, 3, 4, 1, 4, 6]; // 1.Set let newArr = Array.from(new Set(arr)); // let newArr = [...new Set(arr)]
32
0
0
继承学习总结
摘要:继承 1.原型链继承: 让子类的原型对象指向父类的实例,当子类的实例找不到对应的方法时,就按原型链往上找。 function Parent(){ this.name = ["原型链继承"]; } // 原型上挂载方法 Parent.prototype.getName = function(){ co
56
0
0
认识 call,apply,bind,学会手写
摘要:1. call,apply,bind的理解 1.1 三者的区别 改变函数执行时的上下文,改变this的指向。 call,apply立刻执行 bind不是立刻执行,而是复制函数更改this //需求 求数组中最大的值 let arr = [2, 12, 4, 6, 8, 10]; console.lo
90
0
0
数组的扁平化练习
摘要:数组扁平化 数组扁平化:将多维数组转换为一维数组 题目1: 将数组[1, [2, [3, [4, 5]]], 6]转换为[1, 2, 3, 4, 5, 6] // 1.1 reduce方法 const arr = [1, [2, [3, [4, 5]]], 6]; let newArrFun = f
39
0
0
数组reduce方法的使用
摘要:1.reduce 求数组中数值之和 /** * 1. reduce 求和 */ let arr = [1, 2, 3, 4, 5]; // let sum = arr.reduce(function (pre, cur, index) { // console.log(pre, cur, index
64
0
0
JS---作用域问题
摘要:全局作用域和函数作用域,基本概念大家应该都知道,这次总结一下深层次的作用域 function fn(a, c) { console.log(a) // function a() { } var a = 123 console.log(a) // 123 console.log(c) // funct
40
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起