zoukankan      html  css  js  c++  java
  • 深入浅出:了解字符串,数组和对象之间的方法和转换

    一、字符串概念及常用的API方法:
    字符串:凡是用双引号或单引号引起来的字符都叫做字符串
     
    1、创建字符串的3种方法;
     
    (1)、构造函数----》构造出来一个对象    
    var str = new String()
    例子:var str = new String("我就是我,不一样的烟火,我看自己上火")
    console.log(str)

    (2)、关键字

    var str = String()
    (3).字面量
    var str = "";
    var str = '';
    var str = String("我就是我,不一样的烟火,我看自己上火")
    console.log(str)
    var str ="我就是我,不一样的烟火,我看自己上火";
    console.log(str)
    原字符串永远都不会被改变
    var str = "你这一辈子有没有为别人拼过命?";
    str[0] = "";
    console.log(str)

    2.字符串常用的API:

    (1)、charAt:输入下标返回相对应的值
    str.charAt(下标)
    var str = "人前一杯酒,各自饮完。人后一片海,独立上岸";
    console.log(str.charAt(3))

    (2)、indexOf:输入值返回对应的下标 如果没有则返回-1

    语法:str.indexOf()
    var str = "人前一杯酒,各自饮完。人后一片海,独立上岸";
    console.log(str.indexOf(""))

    (3)、字符串截取:slice、substring、substr

    slice:当输入一个值得时候是截取的起始位置  (算自身)
    slice、substring:当输入2个值得时候第一个值代表起始位置(算自身) 第二个值是结束位置(不算自身)
    substr:当输入2个值得时候第一个值代表起始位置(算自身) 第二个值代表截取的长度
    例:var str = "人前一杯酒,各自饮完,人后一片海,独立上岸";
    
    console.log(str.slice(2,6))
    console.log(str.substring(2,6))
    console.log(str.substr(2,6))
    (4)、去掉前后空格:trim
     例:var str = " 你好 ";
    var str1 = "再见"
    console.log(str)
    console.log(str1)
    console.log(str.trim())

    (5)、split:将字符串转换为数组

    (6)、replace():替换。第一参数是需要替换的字符  第二个参数是替换成的字符,返回值是新的字符串
    var str = "人与人之间的安全距离是一百二十二公分,跟你喜欢的人在一起,你会努力去缩短这个距离";
    var newStr = str.replace("","");
    console.log(str)
    console.log(newStr)

    (7)、将json字符串转json对象的方法:

    例1、var obj =eval('('+ str +')');
    
    例2、var obj = str.parseJSON();//由JSON字符串转换为JSON对象
    
    例3、var obj = JSON.parse(str);//由JSON字符串转换为JSON对象

    二、数组常见的例题:

    (1).让数组中的元素交换位置(重要)
    var arr = [10,20];
    var temp = arr[0];
    arr[0] = arr[1];
    arr[1] = temp;
    console.log(arr)
    (2)、求数组的最大数和最小数(重要)
     var arr = [10,20,30,40,50];
    //最大数
    function maxNum(arr){
    var max = arr[0];
    for(var i=0;i<arr.length;i++){
    if(max<arr[i]){
    max = arr[i];
    }
    }
    return max;
    }
    console.log(maxNum(arr))

    1、数组常见的API:

    (1)、push:尾部添加;返回值:是数组的长度(该方法会改变元素数组)
    arr.push();
     例:var arr = [10,11,12,13];
    var newArr = arr.push(14);
    console.log(newArr,arr);
    (2)、unshift:头部添加; 返回值:是数组的长度( 该方法会改变元素原数组)
    arr.unshift();
     (3)、pop: 尾部删除;返回值:是删除的数字;(该方法会改变元素原数组)
    arr.pop();

    (4)、shift:头部删除;返回值:是删除的数字;( 该方法会改变元素原数组)

    arr.shift();

    (5)、sort():排序; 返回值:是排序好的数字;( 该方法会改变元素原数组)

    arr.sort();
     如果sort内部传递了参数的话那么就是按照数字的排序进行排序
     如果sort内部没有传递参数的话则按照ASCII进行排序
     var newArr = arr.sort(function(a,b){
     return   a-b;
     });
     var arr = [1,2,3,4,5,6];
      var newArr = arr.sort(function(){
        return Math.random()-0.5;
      });
      console.log(newArr,arr);

    (6)、reverse():反转

    var arrb = [1,2,3,4,5,6];
     ar newArr = arrb.reverse();
    console.log(arrb,newArr) 
    2.数组常见的API2:
    (1)、concat:数组的拼接;返回值:拼接以后新的数组(原数组不会发生改变)
    语法:arr.concat(第二个数组);
    例: var arr = [1,2,3];
    var arr1 = [4,5,6];
    var newArr = arr.concat(arr1);
    console.log(newArr,arr,arr1)
    (2)、join:将数组转换为字符串;( 原数组不会发生改变)
    语法:arr.join("");参数:任意符号  把数组按照什么样子进行转换成字符串
     例:var arr = [10,20,30,40];
    var str  = arr.join("/");
    console.log(str,arr)
    (3)、split:将字符串转换为数组   //字符串的方法
    语法:str.split();参数:字符串里面自带的一些符号  或者你想要哪种符号进行分割  但是前提是字符串里面必须有这个符号
     例:var str = "10,20,30,40";
    var arr = str.split(",");
    var newArr = [];
    
    for(var i=0;i<arr.length;i++){
    newArr.push(Number(arr[i]));
    }
    console.log(newArr)
    (4)、toString:将数组转换为字符串;----->自己去查-----
    语法:arr.toString();
    var arr = [10,20,30,40];
    var str  = arr.toString("");
    console.log(str,arr)
    (5)、eval():传入一个字符串,然后将字符串解析成js代码去执行
    (6)、slice:截取;(原数组不会发生改变)
    语法:arr.slice()
    
    当传入1个参数的时候这个参数代表截取的起始位置
    当传入2个参数的时候第一个参数代表截取的起始位置但是不算自身 第二个参数代表截取结束的位置
    
     例:var arr = [10,20,30,40,50,60,70,80,90,91,92,93,94];
    var newArr = arr.slice(3,7);
    console.log(newArr,arr)
    (7)、splice():截取;( 原数组会发生改变)
    语法:arr.splice();
    当传入1个值得时候这个值代表截取的起始位置(不算自身)
    当传入2个值得时候第一个值代表截取起始的位置第二个值代表截取的长度
    当传入三个值得时候,如果第二个值是0的话代表的插入 第一个值代码插入的位置,第三个值插入的数字
    当传入三个值得时候,如果第二个值是非0的数字的数代表替换,第一个值是插入的位置,第三个值是插入的数字,第二个值还代表替换的长度
    例:var arr = [10,20,30,40,50,60,70,80,90,91,92,93,94];
          var newArr = arr.splice(3,3,"你好");
          console.log(newArr,arr)

     3.什么是伪数组,如何将伪数组转化为标准数组

    这里把符合以下条件的对象称为伪数组:
      1,具有length属性
      2,按索引方式存储数据
      3,不具有数组的push,pop等方法
     伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push,pop等方法,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用document.getElementsByTagName, document.childNodes之类 的,它们返回的NodeList对象都属于伪数组。
    可以使用以下函数将伪数组转化为真正的Array对象(兼容问题处理)。
    function makeArray(c) {
    try {
    return Array.prototype.slice.call(c);
    } catch (e) {
    var ret = [], i, len = c.length;
    for (i = 0; i < len; i++) {
    ret[i] = (c[i]);
    }
    return ret;
    }
    }

    三、对象:

    什么是一个对象?万物皆是对象
    对象作用:存储信息、命名空间
        三种方法:
    1、构造函数
    var obj = new Object();是一个Object
    2、关键字
    var obj = Object();返回值{}
    3、字面量
    var obj = {}:返回值{}
    var obj = new Object();
    var obj1 = Object();
    var obj2 = {};
    console.log(obj2)
    如果一个变量当做属性的话 那么这个属性是只属于这个对象的(婚前是属于大家的  婚后是属于自己的)
    //添加数据  属性:key值 ;  属性值:val ;obj.key = val;
    var obj = {a:3}//数据的类型是key:val  可以存放多个键值对  每个之间用逗号隔开
    obj.name = "唐文";
    obj.sex = "不详";
    obj.age
    //上面这个值永远都是key值
    //下面这个值可以是一个变量  如果加""则是属性  不加引号则是变量
    var name = "bbbb";
    obj[name] = 333;
    
    //删除
    delete obj.name
    
    //添加方法
    obj.fn = function() {
    alert(1)
    }
    console.log(sex)

    JSON对象转字符串 

    var last=obj.toJSONString(); //将JSON对象转化为JSON字符
    var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

    对象常用

    1.获取对象key值得常用方法,hasOwnProperty,

    var jsonObject1 = {
                "name": "xiaoming",
                "age": 29
            },
            var keys1 = [];
        for (var p1 in jsonObject1) {
            if (jsonObject1.hasOwnProperty(p1))
                keys1.push(p1);
        }
        alert(keys1);

    2.如果不使用 hasOwnProperty,给Object 添加自己的属性时,也会输出出来

    Object.prototype.test = "I am test";
        var jsonObject = {
                "name": "xiaoming",
                "age": 29
            },
            keys = [];
        for (var p in jsonObject)
            keys.push(p);
        alert(keys);  //name,age, test

     3.ES6获取key:Object.getOwnPropertyNames

    var obj={a:1,b:2};
    Object.getOwnPropertyNames(obj)

    4.获取数组对象的key和值

    arr.forEach((v,i)=>{
    
    Object.keys(v).forEach(v=>{
    
    console.log(v)//取到了key
    
    console.log(arr[i][v])//取到了值
    
    })
    
    })

     (2)let keyarr = Object.keys(obj).sort;//es6获取对象的key值

  • 相关阅读:
    python中时间日期格式化符号的含义
    关于long long int和__int64用%I64d和%lld输出在不同编译语言下的正确性
    并查集 poj2236
    数据结构 最长公共子序列问题
    449B
    oj判题WA/RE怎么办
    如何准确区别python中strftime strptime的用法
    通过HttpWebRequest在后台对WebService进行调用 【转】
    利用maven 下依赖包
    Maven的安装
  • 原文地址:https://www.cnblogs.com/yunshangwuyou/p/9277093.html
Copyright © 2011-2022 走看看