发表于: 2019-10-16 23:37:48
1 758
今日完成的事
今天复习了一些原生js的知识
数组的增删改查
1.Push:向数组的末尾追加新内容,参数一个到多个,任何数据类型都可以,传递多个用逗号隔开,返回值是新增后的数组长度,原有数组发生改变。
2.unshife:向数组开头追加新内容,参数一个到多个,任何数据类型都可以,传递多个用逗号隔开,返回值是新增后的数组长度,原有数组发生改变。
3.把数组当成一个普通的对象,使用对象键值对的操作给其设置新的属性。
ary[ary.length]=xxx。
4.pop:删除数组最后一项,不支持参数,返回值为被删除的那一项,原有数组改变了。
5.shift:删除数组第一项,不支持参数,返回值为被删除的那一项,原有数组改变了。
6.delete把数组按照对象的方法删除,删除指定索引一项,delete.数组[索引],但是shift删除会把索引从后往前提,但是delete删除不会,索引不会改变,length值也不会改变。
7.length--:删除数组最后一项
8.splice:数组中内置的方法,可以实现数组的增加、修改和删除
Splice(n,m):从索引n开始删除m个(m不写从n删除到末尾,n不写一项都不删除)返回值被删除的内容(以一个新数组保存得),原有数组改变。
Splice实现修改
Splice(n,m,x):在原有删除的基础上用X代替删除的内容。
Splice实现增加
Splice(n,0,x):再修改的基础上,我们一项都不删除,把x插入到索引n的前面。
Splice(0,0,x)像数组开头追加新内容,
Splice(length,0,x)向数组末尾增加新元素
9.slice数组的查询
参数:slice(n,m)从索引n开始找到索引为m处不包含m,把找到的部分以一个新数组返回,原来数组不变。只写n不写m从n开始找到末尾。n不写或者0则克隆数组。
10.concat将多个数组的拼接,既可以拼接数组也可以拼接其他数据类型。一个参数也不写相当于克隆数组。参数:要拼接的内容(把内容放在原数组的后面),可以是一个数组,也可以是一些数据值。返回值拼接后的新数组,原数组不变。
11求数组最大(小)值
把数组转化为字符串
1.Tostring():实现把数组转化为字符串(转换后的字符串以逗号分隔每一项)参数:无,返回值:转换的字符串,原有数组不变。
2.join:把数组按照指定的分隔符转化为字符串,和字符串中的split相对应,参数:指定的连接符,返回值:转换后的字符串,原有数组不变。
利用join数组求和,
evel把字符串变为JS表达式执行
数组的排列和排序
reverse:把数组中的每一项倒过来排列,不涉及排序,参数无,返回值排序后的数组,原有数组改变,
sort:实现数组排序,参数:无或者回调函数,返回值:排序后的数组,原有数组改变。不传参数可以给10以内的数组升序排列,超过10就无法处理了,多位数只识别第一位,
想要处理需要传回调函数
变量.sort(function(a,b){
return a-b;升序
return b-a;降序
});
验证数组中是否包含某一项
Indexof/lastindexof:当前的项在数组中第一次或者最后一次出现位置索引。
数组中的这两个方法在ie6-8下不兼容。
字符串中的这两个方法兼容所以浏览器
如果当前数组中没有这一项,返回的索引是-1,我们根据这一点可以验证数组中是否包含这一项,
遍历数组中的方法
ForEach:用来遍历数组中的每一项数组中有多少项回调函数执行多少次
数组去重
1. 数组塌陷问题,我们使用splice删除数组中的某一项,删除的这一项后面的某一项都要向前进一位(在原有索引上减一),此时如果我们j++,循环操作的值累加了,我们通过最新j获取的元素不是紧挨删除这一项的元素,而是跳过这一项获取的元素,此方法性能不好
并没有完全去重,要解决数组塌陷在删除时让索引号不改变就可以了,加个j--
或者
或者
方法二
利用indexof是否包含某一项如果包含,把当前项删除掉
先把当前项以后的值组成一个新数组,然后比较当前项在新数组里有没有,有的话把当前项删除,别忘了数组的塌陷,此方法不兼容。
方案三
遍历数组的每一项把每一项作为新对象的属性名和属性值存储起来,在每一次向对象中存储之前,首先看一下原有对象中是否包含了这个属性,如果属性名存在,不存储并删除此项
使用splice删除性能消耗很大可以换一种思路。使用splice会导致后面的索引向前进一位,如果后面有很多项,消耗的性能很大,我们可以把最后一项拿过来替换当前要删除的这一项,然后再把最后一项删除。
冒泡算法
第一个数与后一个数相比较,如果后一个数比前一个数大则交换位置。
大循环数组一共7个数执行6次,小循环执行执行(不用和自己比)在减去当前已执行的轮数。
递归算法
递归的定义:函数自己调用自己,
Input事件汇总
1..onfocus 当input 获取到焦点时触发
2.onblur 当input失去焦点时触发,注意:这个事件触发的前提是已经获取了焦点再失去焦点的时候才会触发该事件,用于判断标签为空。
3.onchange 当input失去焦点并且它的value值发生变化时触发,个人感觉可以用于注册时的确认密码。
4.onkeydown 按下按键时的事件触发,
5.onkeyup 当按键抬起的时候触发的事件,在该事件触发之前一定触发了onkeydown事件--相当于一个按键,两个事件,没怎么用过
6.onclick 主要是用于 input type=button,input作为一个按钮使用时的鼠标点击事件
7.onselect 当input里的内容文本被选中后执行,只要选择了就会触发,不是全部选中
8.oninput 当input的value值发生变化时就会触发,(与onchange的区别是不用等到失去焦点就可以触发了)
明天计划的事
写完分页
遇到的困难
用ng-for循环出的元素获取不到,导致分页很难写。
收获
对于后台页感受更深刻了
评论