字符串和JSON

作者: 南山码农 | 来源:发表于2017-08-01 12:29 被阅读0次

    0、对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么?

    对于http协议而言,html,css,js,json都是一些字符串,只不过是他们符合某些特定的语法,而能被浏览器解读。

    1、使用数组拼接出如下字符串 ,其中styles数组里的个数不定

    var prod = {
        name: '女装',
        styles: ['短款', '冬季', '春装']
    };
    function getTplStr(data){
        var str='<dl class="product">'
        str+='<dt>'+data.name+'</dt>';
        for(i=0;i<data.styles.length;i++){
                str+='<dd>'+data.styles[i]+'</dd>';
                console.log(1);
        }
      return str+'</dl>';//todo...
    };
    var result = getTplStr(prod);  //result为下面的字符串
    <dl class="product"><dt>女装</dt><dd>短款</dd<dd>冬季</dd><dd>春装</dd></dl>
    
    Paste_Image.png

    2、写出两种以上声明多行字符串的方法

    例如:

    var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
    

    这段字符串很长,如何多行优雅的显示

     var str='abcdeabcdeabcdeancde'
            +'abcdeabcdeabcdeancde'
            +'abcdeabcdeabcdeancde'
            +'abcdeabcdeabcdeancde';
    
    var str='abcdeabcdeabcdeancde\
    abcdeabcdeabcdeancde\
    abcdeabcdeabcdeancde\
    abcdeabcdeabcdeancde';
    
    (function () { /*
    abcdeabcdeabcde
    abcdeabcdeabcde
    abcdeabcdeabcde
    abcdeabcdeabcde
    abcdeabcdeabcde
    */}).toString().split('\n').slice(1,-1).join('\n')
    

    3、补全如下代码,让输出结果为字符串: hello\\饥人谷

    var str ='hello\\\\饥人谷' //补全代码
    console.log(str)
    

    4、以下代码输出什么?为什么

    var str = 'jirengu\nruoyu'
    console.log(str.length)    //13  \n是一个换行符,占一个字符
    

    5、写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是

    var str = 'abcdedcba';
      function isReverse(newStr){
        return newStr === newStr.split('').reverse().join('')
    }
    console.log( isReverse(str))  // true
    
    var str='abcdedcba';  
      function isReverse(newStr){
        for(i=0;i<newStr.length;i++){
            if(newStr.charAt(i)==newStr.charAt(newStr.length-1-i)){ }else{
                return false;
                }
      }
      return true;
    }
    console.log( isReverse(str))  //true
    
    var str = 'abcdedcba'
      function isReverse(newStr){
          var arr1 = [];
          var arr2 = newStr.split('');
          var i = 0;
          for(var n = 0; n < arr2.length; n++){
              arr1[i] = arr2[arr2.length-1-n];
              i++;
            }
        return arr1.join('') === arr2.join('');  // arr1 和 arr2是数组,要连成字符串比较。
       }
    isReverse(str);  // true
    

    6、写一个函数,统计字符串里出现出现频率最多的字符

    var str = 'hello world yhhhhhhh';
    function fn(str){
      var obj = {};
      for(var i in str){
          if(obj[str[i]]){
            obj[str[i]]++;
          }else{
          obj[str[i]] = 1;
          }
      }    /*把字符串统计成对象*/ 
    
      var count = 0;
      var maxValue;
      for(var key in obj){
          if(obj[key] > count){
              count = obj[key];
              maxValue = key;
          }
        }    /*遍历对象寻找最大的键值和键名*/
    
    return 'maxValue: ' + maxValue + '\n' + 'count: ' + count;
    }
    
    fn(str);
    

    7、写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如

    function camelize(str){
      var arr = str.split('-');
      var newArr = [];
      for(var i in arr){
        newArr[i] = arr[i].replace(arr[i][0],arr[i][0].toUpperCase())
      }
      newArr.join();
      return newArr.join('');
    }
    
    camelize("background-color") == 'BackGroundColor'
    camelize("list-style-image") == 'ListStyleImage'
    

    8、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)

    function ucFirst(str){
      var newStr = str.replace(str[0], str[0].toUpperCase());
      return newStr;
    }
    
    ucFirst("hunger")  // "Hunger"
    ucFirst("hunger") == "Hunger"
    

    9、写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如

    function trunCate(str,maxlength){
      var newStr='';
      if(str.length>maxlength){
        newTtr=str.substr(0,maxlength)+'...';
      }else {
        newStr=str;
      }
      return newstr;
    }
    trunCate("hello, this is hunger valley,", 10) == "hello, thi...";
    trunCate("hello world", 20) == "hello world"
    

    10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?

    • JSON
      (JavaScript Object Notation)是一种轻量级的数据交换格式,它基于javaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括:c,c++,c#,Java,JavaScript,Perl,Pythone等)这些特性是JSON成为理解的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。

    • JSON语法
      JSON语法是JavaScript对象表示语法的子集
      1.数据在名称/值对中
      2.数据由逗号分离
      3.花括号保存对象
      4.方括号保存数组
      JSON数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开。

    var json = {"name":"Byron","age":24}
    var json2 = [
         {"name":"Byron","age":24},
        {"name":"Byron2","age":27}
    ]
    
    • window.JSON
      1、window.JSON是浏览器的内置对象,用来检测对JSON的支持情况。
      2、JSON对象内置了JSON.parse()、JSON.stringify()。
      3、IE8版本以上才内置支持JSON.parse()函数方法

    11、如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?

    • 原生支持

    IE以上浏览器都支持了一个对象JSON,JSON对象主要有两个『静态』函数

    1.parse:把字符串转化为JSON对象
    2.stringify:把JSON对象转化为字符串(出人意料的不叫toString,因为不是实例方法)

    var json = {
      "name": "Byron",
      "age": 24
    };
    
    var json_str = JSON.stringify(json);
    console.log(json_str);
    console.log(JSON.parse(json_str));
    
    • eval(不推荐使用)

    邪恶的eval出现了,以前很多人图省事用eval把字符串转为json

    var json_str = '{"name": "Byron", "age": 24}';
    
    var json = eval('(' + json_str + ')');
    
    console.log(json);

    相关文章

      网友评论

        本文标题:字符串和JSON

        本文链接:https://www.haomeiwen.com/subject/vitjlxtx.html