
JavaScript
仰柔川
少女快去创造奇迹!
展开
-
js数组分组
var chunk = (arr, size) =>{ let result = [] while(arr.length){ result.push(arr.splice(0, size)) } return result}var chunk = (arr, size) =>{ return Array.from({le...原创 2020-03-29 14:14:21 · 588 阅读 · 0 评论 -
js排序算法
1.冒泡排序平均时间复杂度O(n*n) 最好情况O(n) 最差情况O(n*n) 空间复杂度O(1) 稳定性:稳定function bubbleSort(arr){ let len = arr.length for(let i = 0; i < len; i++){ for(let j = 0; j < len-1-i;...原创 2020-03-21 23:45:01 · 232 阅读 · 0 评论 -
for循环下的setTimeout
for(var i = 0; i < 2; i++){ (function(i){ setTimeout(()=>{ console.log(i) },i*1000) })(i)}// 0 1 2for(var i = 0; i< 3;i++){ setTimeout(function()...原创 2020-03-20 22:42:30 · 290 阅读 · 0 评论 -
算法题
递归+循环function fn(str){ let res = [] if(str.length == 1) return [str] for(let i = 0; i < str.length; i++){ let rest = str.slice(0,i) + str.slice(i+1) let arr = fn(res...原创 2020-03-15 18:45:26 · 384 阅读 · 0 评论 -
笔试小题
①对象的解构赋值找到同名属性,对该属性对应的变量赋值let {bar: foo,bar = 'foo'} = {foo: 'foo', bar: 'bar'}console.log(bar, foo) // bar bar②NodeList类数组自带forEach方法let a = document.querySelectorAll('body')console.l...原创 2020-03-15 15:57:27 · 157 阅读 · 0 评论 -
js函数传参
知识点一:函数参数传递形式基本类型是按值传递的引用类型按共享传递(传递对象引用的副本)修改参数对象的属性值,会影响到外部对象,但是重新赋值不会影响知识点二:函数参数和函数内声明的变量同名 都代表的是同一个东西let a = {name: 1}function fn(a){ console.log(a,arguments[0])//{name: 1} {name: 1...原创 2020-03-14 20:58:19 · 123 阅读 · 0 评论 -
js判断字符串是否是回文的三种方法
function fn1(str){ let strReverse = str.split('').reverse().join('') return str == strReverse ? true : false}function fn2(str){ let len = str.length if(len == 0 || len == 1) retu...原创 2020-03-13 14:21:37 · 3512 阅读 · 0 评论 -
bind绑定this特点
const obj = { a: 1, b: function() { console.log(this.a); }}const obj1 = { a: 2}const fun = obj.b;fun.bind(obj1).apply(obj); //2fun.bind(obj1).bind(obj)()//2bind绑定this的特点:...原创 2020-03-08 22:49:09 · 451 阅读 · 0 评论 -
数组对象去重
仅根据id判断letarr1 =[{id:1,name:'a'},{id:2,name:'b'},{id:1,name:'a'},{id:3,name:'c'}]let obj = {}let res = arr1.reduce((prev, cur) => { obj[cur.id] ? '' : ob...原创 2020-03-08 21:39:13 · 436 阅读 · 0 评论 -
__proto__ ,prototype,constructor
__proto__每个对象(函数)都具有一个名为__proto__的属性,它指向原型对象,存在于实例和构造函数的原型对象之间,原型链就是靠它形成的 对象的__proto__指向其构造函数的prototype 构造函数的__proto__指向Function.prototype 原型链到Object.prototype终止Function.prototype.__proto__ === ...原创 2020-02-28 22:35:46 · 294 阅读 · 0 评论 -
js斐波那契数列实例
创建指定个数的斐波那契数列function fun(n){ if(n==1){ return [1] }else if(n==2){ return [1,1] }else{ let arr = [1, 1] for(let i = 2; i< n; i++){ arr.pus...原创 2020-02-22 14:38:34 · 329 阅读 · 0 评论 -
array.filter()妙用
获取两个数组中不同的部分arr1 = [1,2,3]arr2 = [2,3,4]let arr= [...arr1, ...arr2].filter(item => !arr1.includes(item) || !arr2.includes(item)) //[1,4]剔除数组中的假值(false, null, undefined, NaN, 0, "")array...原创 2020-02-20 11:17:07 · 658 阅读 · 0 评论 -
嵌套的promise执行顺序以及多个promise顺序执行
1. promise.resolve()① 不带参数的时候,直接返回一个resolved状态的promise对象promiseStatus:resolvedpromiseValued : undefined② 带参数时 参数会传给回调函数promiseStatus:resolvedpromiseValued : 参数2.每次调用then都会返回一个新创建的promis...原创 2019-12-19 23:45:53 · 13532 阅读 · 1 评论 -
js常见数组操作总结
目录数组元素求和数据去重数组平铺求数组最大/小值求数组中每个元素出现的次数取数组中的部分元素删除数组中指定元素数组元素求和① reduce() let arr = [1,2,3] let res = arr.reduce((x,y) => x+y)数据去重① reduce() + includes()/indexOf() +...原创 2019-11-06 21:42:47 · 175 阅读 · 0 评论 -
js数据存储Cookie、localStorage、sessionStorage
localstorage(本地存储)、sessionStorage(会话存储)①存储特点存储空间限制:一般为5MB或者更大,拓展了cookie的4KB限制 存储内容类型:只能存储字符串,非字符串的在存储之前会被转为字符串 存储位置:存在客户端,且无需持续的将数据发回服务器②优势存储空间更大 节省网络流量 快速显示 安全性更高 操作方便③不足之处在浏览器无痕模式下...原创 2019-10-25 00:24:13 · 313 阅读 · 0 评论 -
js转换规则总结
目录数据类型转换函数Boolean()Number()String()toString()parseInt(str,n)parseFloat(str)比较运算!!a if(a)!a===和!==a == b+操作符&& 和 || 转换规则①.数据类型转换函数Boolean()为false的特殊值有: fa...原创 2019-10-22 22:32:35 · 255 阅读 · 0 评论 -
js对象总结
js对象大致分为三类:内置对象 宿主对象 自定义对象1.内置对象由ESMAScript实现提供的,不依赖宿主环境的对象,这些对象在ESMAScript程序执行前就已经存在了。Array、Function 、Boolean 、Error、symbol、JSON Date、Number、Math: 日期、数字、执行数学计算的对象 String、 RegExp :用来表示和操作字符串...原创 2019-10-19 12:57:41 · 177 阅读 · 0 评论 -
javaScript向数组中添加元素的方法
向数组中添加元素push 在数组末尾添加 splice 在数组任意指定位置添加 unshift 在数组头部添加 concat 在数组末尾添加(可添加元素或数组)合并数组a.concat(b) a.push(...b) Array.prototype.push.apply(a,b) a.push.apply(a,b)push、unshfit、splice在原数组中进行新增,...原创 2019-09-22 23:26:30 · 2496 阅读 · 0 评论 -
js数组常用方法总结(三) push、concat
push()在原数组的基础上修改的,执行push()方法后原数组的值也会变,在原数组后面添加值;返回值:添加元素后的数组的长度concat()连接两个或多个数组,返回一个新数组一个数组先把原数组的每个值复制到一个新/另的数组,然后在新/另数组上进行操作,不会改变原数组的值。如果参数不是数组,不管参数个数有多少个,push()和concat()都会直接把参数添加到数组后;...原创 2019-09-22 23:25:37 · 512 阅读 · 0 评论 -
js数组常用方法总结(二)map&forEach
1.map()方法返回一个新数组,新数组中的每一项都是原数组调用回调函数后的结果。map()不会对空数组进行检测 map()返回一新数组,不改变原数组2.forEach()方法返回undefined,为数组中的每一项执行一次callback函数。 只能用于遍历数组 语法:array.forEach(function(currentValue, index,...原创 2019-09-16 23:35:41 · 368 阅读 · 0 评论 -
js this指向问题总结
通过搜索以及书籍查阅 不同地方对this对象的解释:this为函数调用时使用的上下文。this对象是运行时基于函数的执行环境绑定的this为当前作用域的对象实例1.普通函数: 谁调用我 我的this就指向谁2.箭头函数: 我在哪个函数 this就指向谁默认指向在定义它时所处的对象 而不是执行时的对象 箭头函数实际并没有自己的this对象,其内部的this自动指向外层代...原创 2019-09-10 00:10:41 · 194 阅读 · 0 评论 -
js数组常用方法总结(一)splice slice split(字符串方法)
split语法:split(separator,howmany) 功能:将一个字符串分割成字符串数组 返回值: 新数组 不改变原字符串let str = 'sky,cloud,wind'let strArr = str.split(',', 2) //只截取两个strArr:["sky", "cloud"]str:"sky,cloud,wind" // 未改变原字符串Sli...原创 2019-09-10 00:07:08 · 2132 阅读 · 0 评论 -
js数组字符串常用方法总结
不改变原数组的方法有: concat、join、slice、map改变原数组的方法:splice、sort 、push、forEach1.删除数组中指定的元素 indexOf() & splice() let index = array.indexOf(val)// 获取该元素在数组中的索引 // 若数组中存在该元素 if(index > -...原创 2019-09-20 09:06:36 · 143 阅读 · 0 评论 -
两种方法实现全选、全不选、反选
效果图01 使用jquery实现 <script> $(document).ready(function () { //全选 $("#checkAll").click(function () { $("[name=checkbox]:checkbox").prop("ch...原创 2019-05-02 17:26:49 · 1229 阅读 · 0 评论 -
javascript数据类型、typeof和instanceof、null和undefined
目录javascript数据类型typeof 检测变量的数据类型instanceofnull&undefinedjavascript数据类型1.基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol(ES6)。2.引用数据类型:对象(Object)、数组(Array)...原创 2019-05-05 12:10:13 · 483 阅读 · 0 评论