2020-09-01---ES5、String

52 篇文章 0 订阅

一、选择排序

取一个元素与剩下所有的元素进行比较,复合条件,交换位置。

<script>
        /*
        取一个元素与剩下所有的元素进行比较,符合条件,交换位置。
        选择一个数与剩下的所有元素比较,符合条件,交换位置
        */
        function fnSortSelect(){
            arr = [3,9,5,12,4];
            //一圈选择一个数,
            for(var i = 0;i < arr.length - 1;i ++){
                //选择的一个数与剩下的所有进行比较
                for(var j = i;j < arr.length;j ++){
                    //符合条件
                    if(arr[i] < arr[j]){
                        //交换位置
                        var t = arr[j];
                        arr[j] = arr[i];
                        arr[i] = t;
                    }
                }
            }
            // console.log(arr);
            return arr;
        }
    </script>

二、利用堆栈理解值传递与引用传递

基本数据类型(只有一个值,且值存放在栈空间中)的值都属于值传递。
复合数据类型(多个值,值都存放在堆中,栈空间存放的是指向堆的地址)的值都都属于引用传递。

 <script>
        /*
        一个栈只能存放一个数据
        简单数据类型(只有一个数据)的变量都存放在栈里面,是值传递。
        符合数据类型(有多个数据)的变量的值都存放在堆里面,栈里面放的是值所在的堆的地址,是引用传递。
        */
        //简单数据类型
        // var a = 3;
        // var b = a;
        // b = 4;
        // console.log(a,b);//3 4

        //复合数据类型
        //数组
        // var arr = [1,3,5];
        // var list = arr;
        // list[0] = 2;
        // console.log(arr,list);//[2,3,5] [2,3,5]
        //对象
        // var obj = {id : 1,name : '苹果',num : 9};
        // var object = obj;
        // obj.name = '桃';
        // console.log(obj,object);//{id: 1, name: "桃", num: 9} {id: 1, name: "桃", num: 9}

        // var a = 1;
        // function fn1(a){
        //     a = 3;
        //     return a;
        // }
        // fn1(a);//1

        var arr = [0];
        function fn2(list){
            list[0] = 1;
        }
        fn2(arr);
        console.log(arr);//1

        var arr = [1,2,3];
        function fn3(list){
            list = 5;
        }
        fn3(arr[1]);
        console.log(arr);//1,2,3
    </script>

三、JSON :是一个跨平台跨语言的一种网络数据传输格式。

[] : 如果里面有字符串,一定使用双引号。
{} : key必须加双引号,value如果是字符串,必须加双引号
注:在JSON中value的值不能是:undefined NaN function
infinity 一个JSON文件里只能有一个json数据。

原生js环境                           JSON
[1,2,'3']                          [1,2,"3"]
{name : '张三'}                    {"name" : "张三"}
{'name' : "张三"}
{"name" : "张三"}
{eat : function(){return '吃';}}

四、严格模式

“use strict”; //必须放到作用域的开头部分
什么影响?

  1. 不能够隐式声明变量,必须添加关键字
  2. 函数的形参不允许重复
  3. 函数中形参值的变化不影响arguments中的值
  4. arguments中的callee方法不能再表示自己的函数(淘汰了)
  5. with():已禁用
  6. 新增关键字 eval arguments
  7. 取消了八进制

五、arguments : 内置的伪数组对象(实参副本)

六、ES5新增的数组方法(都不会改变原数组)

1.indexOf(元素,[start]):

查找元素在数组中第一次出现的下标位置。如果没有找到,返回-1;第二个参数,从哪个下标开始向后查找。

2.lastIndexOf(元素,[start]):

从右向左查找元素在数组中第一次出现的下标位置。如果没有找到,返回-1;第二个参数,从哪个下标开始向前查找。

3.forEach(function(value,index,array){}) 遍历数组

ES5中操作数组的一种方法,主要功能是遍历数组,该语句需要一个回调函数作为参数,回调函数的形参依次为:value:遍历的数组内容,index:对应的索引,array:数组本身。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var arr = [
                    {
                        "user" : "张一山",
                        "age" : 28
                    },
                    {
                        "user" : "张二毛",
                        "age" : 29
                    },
                    {
                        "user" : "张三疯",
                        "age" : 217
                    }
                ];
        //一般函数写法
        arr.forEach(function(value){
            console.log(value.user + ':' + value.age);
        })
        //回调函数写法
        arr.forEach((value,index)=> {
            console.log(value.user + ':' + value.age);
            console.log(index);
        });
    </script>
</body>
</html>

在这里插入图片描述

4.map(function(value,index,array){return …})

遍历数组,返回一个新数组(可以对数组中的每一个元素进行操作)

5.filter(function(value,index,array){return 过滤条件})

过滤满足条件的元素,返回一个新数组

6.some(function(value,index,array){return …})

判断数组中的元素是否符合条件,只要有一个符合条件,返回true,同时结束循环。如果遍历完数组,发现都不符合条件,返回false。

7.every(function(value,index,array){return …})

判断数组中的元素是否符合条件,如果遍历完数组,发现都符合条件,返回true。如果有一个不符合条件,则返回false,同时退出循环。

8.reduce(function(prev,next,index,array){return …})

归并。prev第一次循环的时候,取的是数组中第一个元素。next是依次从第二个元素开始遍历。从第二次循环开始,将prev与next运算后的结果再次赋给prev。

<script>
        //1.indexof(value,start)
        arr = [1,3,2,5,2,3,4,3,2];
        //返回3第一次出现时的下标
        console.log(arr.indexOf(3));//1
        //返回从下标为2开始查找3第一次出现时的索引
        console.log(arr.indexOf(3,2));//5

        //2.lastIndexOf(value,start)
        //从右向左查找,返回3第一次出现时的下标
        console.log(arr.lastIndexOf(3));//7
        //从低二个参数所指的下标开始向左(前)查找,返回3第一次出现时的下标
        console.log(arr.lastIndexOf(3,2));//1

        //3.forEach(function(value,index,array){})
        // console.log(arr.forEach(function(value,index,array){}))
        //遍历数组,没有返回值
        arr.forEach(function(value,index,array){
            console.log(value,index,array);
        })

        //4.map
        //遍历数组,可以对数组中的每一个值进行操作。返回一个新数组
        console.log(arr.map(function(value){
            return value * 2;
        }))

        //5.filter
        //过滤数组,返回满足条件的新数组
        console.log(arr.filter(function(value){
            return value > 3;
        }))

        //6.some
        //判断数组中是否有满足条件的值,只要发现有一个满足条件,就停止循环,返回true。返回值为true或false。
        console.log(arr.some(function(val){
            return val == 3;
        }))

        //7.every
        //判断数组中是否有满足条件的值,只要发现有一个不满足条件,就停止循环,返回true。返回值为true或false。
        console.log(arr.every(function(value){
            return value == 3;
        }))

        //8.reduce
        //第一次循环,prve取的是数组中的第一个元素。next依次从第二个元素开始遍历。从第二次循环开始,将Prve与next元素后的值再次赋给Prve。
        var list = [1,2,3,4,5];
        console.log(list.reduce(function(prve,next){
            return prve * next;
        }))
    </script>

七、String 字符串

1. 如何声明字符串

  1. 字面量 ’ ’ " "
  2. new String();

2.属性

length 长度 字符串下标也是从0开始,最大下标是length - 1。

3.方法 查 替 截 转 (都不会改变原串)

1. indexOf(‘字符串’,start)

查找字符串在父串中第一次出现时的下标位置。如果没有找到,返回-1;第二个参数,从哪个下标开始向后查找。

2.lastIndexOf(‘字符串’,start)

从右向左查找,查找字符串在父串中第一次出现时的下标位置。如果没有找到,返回-1;第二个参数,从哪个下标开始向前查找。

3.charAt(下标)

查找指定下标位置的字符

4.charCodeAt(下标)

查找指定下标位置字符的编码值

 <script>
        var str = 'how do you do';
        //1.indexOf('字符串'start);
        console.log(str.indexOf('do'));//4
        //2.lastIndexOf()
        console.log(str.lastIndexOf('do'));//11
        //3.charAt()
        //查找指定下标位置的字符
        console.log(str.charAt('4'));//d
        //遍历字符串
        for(var i = 0,len = str.length;i < len;i ++){
            console.log(str.charAt(i));
        }
        //4.charCodeAt()
        console.log(str.charCodeAt(4));//100

        //静态方法  String.fromCharCode()
        console.log(String.fromCharCode(str.charCodeAt(4)));//d
    </script>
replace(旧串,新串)

替换字符串,一次只能替换一个

 <script>
        str = "how you are you";
        //一次只能替换一个
        console.log(str.replace('y','b'));
        console.log(str.replace('are','aree'))

        //全部替换
        while(str.indexOf('y') !== -1){
            str = str.replace('y','t');
        }
        console.log(str);
    </script>
截 截取字符串中指定范围的子串
1.substring(start,end) 支持参数互换,不支持负数
2.slice(start,end)支持负数,不支持参数互换
3.substr(start,length)截取指定长度的字符串
<script>
        str = 'good good study,day day up';
        console.log(str.substring(5,6));
        console.log(str.slice(5,6));
        console.log(str.substr(5,6));
    </script>
1.toUpperCase() : 小写字母转大写字母
2.toLowerCase() : 大写字母转小写字母
3.split(‘切割符’,[length]) : 将字符串转为数组
<script>
        str = 'How Are You';
        console.log(str.toUpperCase());
        console.log(str.toLowerCase());
        console.log(str.split(' '));
        console.log(str.split(''));
    </script>

4.静态方法

String.fromCharCode() 将编码转为字符

八、ASCII码和字符串

中文在ASCII值中的范围:十六进制
4E00 19968
9FA5 40869
20902 (回文数)

案例

<body>
    <!-- 五、影响职业因素 -->
    <table border = '1' cellspacing = '0' width = '300'> 
        <tr align = 'center'>
            <td><b>影响职业因素</b></td>
        </tr>
        <tr align = 'center'>
            <td>请输入一个单词:<input type="text" id = 'in_txt'></td>
        </tr>
        <tr align = 'center'>
            <td>结果:<input type="text" id = 'out_txt'></td>
        </tr>
        <tr align = 'center'>
            <td>
                <input type="button" value="计算" id = 'cal'>
                <input type="button" value="清空" id = 'clear'>
            </td>
        </tr>
    </table>
    <!-- 方法一 -->
    <!-- <script>
        //获取对象
        var o_in_txt = document.getElementById('in_txt');
        var o_out_txt = document.getElementById('out_txt');
        var o_cal = document.getElementById('cal');
        var o_clear = document.getElementById('clear');
        //点击事件
        o_cal.onclick = function(){
            //获取输入框的内容
            var str = o_in_txt.value;
            //把输入框的内容转为数字存放在字符串里
            var str_code = '';
            for(var i = 0,len = str.length;i < len;i ++){
                //转为的数字都依次拼接到字符串里,并用空格把每个数字隔开,这样方便下面截取每个数字
                str_code +=  str.charCodeAt(i) - 96 + ' ';
            }
            console.log(str_code);
            //因为每个数字后面都有一个加号,而最后一个数字后又不需要加号,所以就把最后一个加号截掉。然后把字符串转为以空格为分隔符分隔的数组,然后截取每一个数字,最后用+连接每一个数字。
            str_code = str_code.substring(0,str_code.length-1).split(' ').join('+');
            // str_code = str_code
            console.log(str_code);
            //计算和
            var sum = eval(str_code);
            //将数字和和都放到输入框里
            o_out_txt.value = str_code + '=' + sum;
        }
        o_clear.onclick = function(){
            o_in_txt.value = '';
            o_out_txt.value = '';
        }
    </script> -->
    <!-- 方法二 -->
    <script>
        //获取对象
        var o_in_txt = document.getElementById('in_txt');
        var o_out_txt = document.getElementById('out_txt');
        var o_cal = document.getElementById('cal');
        var o_clear = document.getElementById('clear');
        //点击事件
        o_cal.onclick = function(){
            //先把26个字母放到一个字符串里,让每一个字母和它在字符串里的下标一一对应。
            var word = ' abcdefghijklmnopqrstuvwxyz'
            //放输入的字符对应的数字
            var str = '';
            //获取输入框里面的字符
            var o_str = o_in_txt.value;
            var sum = 0;
            //判断输入框里面的字符
            for(var i = 0;i < o_str.length;i ++){
                for(var j = 0;j < word.length;j ++){
                    //如果输入框里面的字符和word里面的字符一致,就把该字符在word里面对应的位置放到str里面。
                    if(o_str[i] === word[j]){
                        str += j + '+';
                        sum += j;
                    }
                }
            }
            //最后一个数字后面不需要加号,截掉。
            console.log(str.substring(0,str.length-1) + '=' + sum);
            o_out_txt.value = str.substring(0,str.length-1) + '=' + sum;
        }
        o_clear.onclick = function(){
            o_in_txt.value = '';
            o_out_txt.value = '';
        }
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问题: 我在使用IDEA时遇到了一些问题,比如"Cannot resolve symbol"、"Command line is too long"、"Illegal character"等等。请问有什么解决方法吗? 回答: 针对你提到的问题,有一些解决方法可以尝试。首先,对于"Cannot resolve symbol"的问题,可以尝试重启IDEA,有时候这样就可以解决问题。\[2\]对于"Command line is too long"的问题,可以尝试缩短代码生成器或应用程序默认配置的命令行。可以通过修改项目所在目录下的.idea\workspace.xml文件来解决。找到标签<component name="PropertiesComponent">,在标签里加一行表示动态路径<property name="dynamic.classpath" value="true" />。\[3\]至于"Illegal character"的问题,可能是因为代码中出现了非法字符。可以检查代码中的特殊字符或者尝试重新编码文件来解决这个问题。\[2\]希望这些方法能够帮助你解决问题。 #### 引用[.reference_title] - *1* [svn提交代码中断 报错: svn: Working copy '' locked.](https://blog.csdn.net/weixin_39297312/article/details/80353991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [IntelliJ IDEA 错误备忘录](https://blog.csdn.net/wb1046329430/article/details/104519296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值