day9 10

数组常用

- pop 删除数组最后一项

- push 添加到数组最后一项

- shift 删除数组的第一项

- unshift 添加到数组的第一项

- splice 可以添加或者删除数组指定位置的内容

- reverse  可以反转数组

- sort 可以排序数组 

var arr = [1,2,4,3];

arr.sort(function(a,b){

    return a-b;

})

- concat:把2个或者多个数组连接成一个数组 

- join  : 可以数组通过指定的字符连接成字符串

- indexOf :查找元素再数组中的索引 , 如果没有找到 那么就会返还-1

### 冒泡排序 

- 如果前一项大于后一项的值,那么就把前一项和后一项 互换位置 ,重复这个过程来进行排序 

### 选择排序 

- 找到最小值索引,记录最小值的索引 ,把最小值索引的值和假设的最小值 进行互换操作 ,重复这样的过程,然后排序;

### 传值 和 传址

- 简单数据类型会传值  

    - 以值的形式存在栈里 

- 复杂数据类型会传址  

    - 以址存在栈里

    - 值实际上在堆里 

- 传址会造成互相引用 (互相影响);

- 如何解决传址问题(互相影响问题)

    - 深拷贝 

- 字符串的方法 replace : 替换指定字符;

 - 数组塌陷 

    - 在循环的时候改变了原本数组的长度

    - 就是把 i--

 var arr = ["a","b","c","d"];

         arr.splice(1,arr.length-1);

        console.log(arr);

        for(var i=0;i<arr.length;i++){

            arr.splice(i,1);

            // console.log(arr);

            i--

        }

        console.log(arr);

- 深拷贝 

    - JSON.stringify() : 把对象转换成json字符串 

    - JSON.parse(): 把json字符串转成对象

    - JSON.parse(JSON.stringify(对象)) :得到一个新的对象

    - 缺点 会忽略一些属性 ,undefined function ...

    - 递归深拷贝

var obj1 = {

            name: "张三",

            age: 20,

            a:undefined,

            fn:function(){

                console.log("fn");

            },

            hobby:{

                one:"篮球",

                fn1:function(){

                    console.log(111);

                }

            }

        }

        // 可以通过JSON.stringify  和  JSON.parse 来做深拷贝

        // 1.JSON.stringify 可以把对象转成一个json字符串

        // 2.JSON.parse 可以把js字符串转成对象

        // console.log("旧对象",obj1);

        // var res = JSON.stringify(obj1);  // obj1 对象转成字符串 

        // console.log(res);

        // var newObj = JSON.parse(res);    // 把字符串转成对象

        // console.log("新的对象",newObj);

        //JSON: 会忽略某些属性 ,比如  undefined function

        var obj = JSON.parse(JSON.stringify(obj1));

        // var obj = obj1;

        // obj.name = "李四";

        console.log("obj的值是json转的:",obj)

        console.log("obj1的值是之前的",obj1);

- this对象

    - js内置的一个对象

    - 全局this对象 就是window

    - 函数内的this对象

        - 不要关注this的定义,需要关注this的调用

            - 函数直接调用

            ```js

            function fn(){ console.log(this) }; fn() ;// this指向window

            ```

            - 通过事件来调用 

            ```js

            btn.onclick = function(){

                console.log(this) // this会执行事件源

            }

            ```

            - 对象里的函数调用

                - 直接通过对象来调用

                ```js

                var obj = {

                    name:"张三",

                    fn:function(){

                        console.log(this);

                    }

                }

                obj.fn(); // this就指向调用的对象 

                ```

                - 通过变量保存函数来调用

                 ```js

                var obj = {

                    name:"张三",

                    fn:function(){

                        console.log(this);

                    }

                }

                var myfn = obj.fn; 

                myfn(); // this就指向window 

                ```

- 严格模式

    - 如何开启 `use strict` 

    - 开启严格模式之后 js 语法变得更加严谨 

- 字符串编码 

    - 字符串比较

- 字符串创建

    - 字面量

    - 内置构造函数

    - 包装对象

- 字符串的常用方法

    - charAt

    - charCodeAt

    - indexOf

    - substring :截取字符串 (包前不包后)

    - substr: 截取字符串 (参数一:开始截取的字符索引位置 ,参数二:是要截取的个数)

    - toLowerCase : 字母转小写

    - toUpcase() : 字母转大写

    - split : 根据对象的字符把字符串切割成数组

    - replace:替换指定的字符

- ES5其他常用循环

    -  数组.方法(function(item,key,arr){ item: 键值  key:键名 arr:原数组  })

    -  forEach 

    -  map 需要return  ; 重新复制一个数组

    -  filter :把返还函数里符合条件的内容过滤出来

    -  some :  返还函数的结果只要有一个满足条件那么结果就会是true ,否则就是false

    -  every: 返还函数的结果 都为true every的结果就是true ,否则就是false

- 时间对象 :js提供一个内置操作时间的对象

    - 如何获取当前时间对象

        - new Date(): 注意 本电脑的时间

    - 获取指定的时间对象

        - 传入对应的年月日的参数 ; 注意:月是0-11月来算的;

        ```js

        new Date("2020","3","1") // 

        ``` 

        - 传入一个字符串; 注意 月是 1-12月

        ```js

        new Date("2020-1-1 11:1:1");

        ```

    - 操作时间对象: 时间对象.方法();

        - 获取年 getFullYear();

        - 获取月 getMonth();  // 注意: 获取的0-11 个月份 

        - 获取日 getDate();

        - 获取星期 getDay();

        - 获取时 getHours();

        - 获取份 getMinutes();

        - 获取秒 getSeconds();

作者:你好_2bcf

链接:https://www.jianshu.com/p/e25ac20aac13

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容