数组
数组塌陷
var arr = [2, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8]; for(var i=0;i<arr.length;i++){ arr.splice(i,1) } 因为i不停地自增,删除时会删一个跳一个
如何解决数组塌陷的问题
-
倒着删除
document.write(arr.length,'<br />') for(var i=arr.length-1;i>=0;i--){ arr.splice(i,1) } document.write(arr.length,'<br />') document.write(arr)
-
上方的方法略作修改
document.write(arr.length, '<br />') for (var i = 0; i < arr.length; i++) { arr.splice(i, 1); i--; } document.write(arr.length, '<br />')
数据去重
先排序 ,判断前后两个是否一样 一样就删除一个
//排序,1是正序,-1是倒序 arr.sort(function(a,b){if(a>b){ return 1} return -1}); alert(arr); for(var i=0;i<arr.length;i++){ if(arr[i] == arr[i+1]){ arr.splice(i,1); i--; } } alert(arr);
遍历 查看后边是否有一样的
for(var i=0;i<arr.length;i++){ // 从当前位置 往后 查找 // i // i+1 var index = arr.indexOf(arr[i],i+1); if(index != -1){ arr.splice(index,1) i--; } } alert(arr)
数组->无序集合-> 数组
(无序集合数据结构---这个数据结构 本身就要求 每个数据都是唯一的 )
var test = new Set(arr); document.write(test) // [object set] 这是一个集合类型 转回数组 var res = Array.from(test) document.write(res) document.write(arr) // 原数组不变 document.write([...test]) 创建集合 new Set() 数组转集合 new Set(数组) 集合转数组 Array.from(集合) 集合转数组 [...集合] 三个.不能少
空数组 如果原数组中有空数组没有的数,就添加进去
function unique_arr(arr) { var res = []; for (var i = 0; i < arr.length; i++) { if (res.indexOf(arr[i]) == -1) { res.push(arr[i]); } } return res; } alert(unique_arr(arr))
ES5/String
严格模式
js
是一个相对不很严谨的语言想开启严格模式,直接在代码最开始的位置写上字符串
use strict
<script> 'use strtic' // 下面代码书写就要按照严格模式来书写 </script>
-
声明变量必须有
var
关键字 -
函数的行参不可以重复
字符串
创建字符串
-
字面量:
var str = 'hello'
-
构造函数创建
var str = new String('hello')
ASCII 字符集
a ~ z
/A ~ Z
/$
/@
/… 之类的内容也有由二进制数字组成的
a ~ z
/A ~ Z
/$
/@
/… 之类的内容都有一个自己的编号,然后在计算机存储的时候,是存储的这些编号
基本包装类型
原本只有对象才可以 调用自己的静态属性和动态方法
但是系统给予了跟对象一样的权限 可以使用属性和方法
所以字符串又称为基本包装类型
字符串 数值 布尔 又称为 基本包装类型
基本类型的数据永不改变 'hello world' 如果拼接 返回也只是新的字符串
//长度属性 length var s1 = 'hello world' alert(s1.length) // 空格也算长度 有多少个字符 //字节 bytes b 中文4个字节 kb 1024 b mb 1024kb gb 1024mb tb 1024gb pb 1024tb //索引属性 var s1 = 'hello world' alert(s1[1]) // 根据索引取出某一个字符 alert(s1[20]) 如果索引超出 那么返回undefined alert(s1[s1.length - 1]) //取出最后一个字符 //遍历字符 for(var i=0;i<=s1.length;i++){ alert(s1[i]) } //修改 var test = [1,2,3,4,5]; test[3] = 400; alert(test); s1[1] = 'z'; //字符串不支持修改 alert(s1);