jsday09

数组

数组塌陷

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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值