美文网首页
字符串与JSON

字符串与JSON

作者: 怎么昵称 | 来源:发表于2017-08-02 15:57 被阅读0次
    0、对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么?

    HTML就是符合HTML语法的字符串
    CSS就是符合CSS语法的字符串
    JS 就是符合JS语法的字符串
    JSON 就是符合JSON语法的字符串,是JavaScript对象表示语法的子集
    当浏览器响应请求,会根据content-type的定义的相关语法解析字符串

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

    var prod = {
    name: '女装',
    styles: ['短款', '冬季', '春装']
    };

    function getTpl(data){
    var str = '<dl class="product">';
    str+="<dt>"+data.name +"</dt>"

     for(var i=0; i<data.styles.length; i++){
        
                str+='<dd>'+data.styles[i]+'</dd>'
    

    }
    str += '</dl>';
    return str;
    };

    getTpl(prod)
    var result = getTpl(prod); //result为下面的字符串

    输出结果:
    <dl class="product"><dt>女装</dt><dd>短款</dd<dd>冬季</dd><dd>春装</dd></dl>

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

    例如:

    var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
    这段字符串很长,如何多行优雅的显示

    var str = 'abcde
    abcde\
    abcde\
    ancde\
    abcde\
    abcde\
    abcde\
    ancde\
    abcde\
    abcde\
    abcde\
    ancde\
    abcde\
    abcde\
    abcde\
    ancde\
    ';

    var str = 'abcde '
    + 'abcde '
    + 'abcde '
    + 'ancde '
    + 'abcde '
    + 'abcde '
    + 'abcde '
    + 'ancde '
    + 'abcde '
    + 'abcde '
    + 'abcde '
    + 'ancde '
    + 'abcde '
    + 'abcde '
    + 'abcde '
    + 'ancde '
    ;

    (function() {/*
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    */}).toString()

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

    var str ='hello\\饥人谷';
    console.log(str)

    • \\ 等于 , 两个为自己本身
    4、以下代码输出什么?为什么

    var str = 'jirengu\nruoyu'
    console.log(str.length)
    输出:
    "jirengu
    ruoyu"

    • \n 转义符的作用是换行,计算字符串长度时只能计作一个字符 ,字符串长度12+1=13
    5、写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是

    var str1=' abcdcba';
    var str2= 'abcdcbb';
    function fn(str){
    return str===str.split(',').reverse().join(' '); //判断倒序和原字符串是否相等
    }
    fn(str2)
    fn(str1)

    输出: true

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

    var str="hello hello hello world"
    function fn(str){
    var dict={}; //新建一个对象
    for(var i=0; i<str.length; i++){ //循环str字符串

    if(dict[str[i]]){ //如果 新空间里有字符的值
    ++dict[str[i]]
    }else{ // +1
    dict[str[i]]=1}
    } //没有这个字符, 则赋值为1

    var count=0; //count 频率,先设一个初始值0
    var maxvalue; // 频率最高的字符
    for(key in dict){ // 再遍历dict 中 ,每个字符: 每个字符的出现频率
    if(dict[key]>count){
    maxvalue=key;
    count=dict[key]}}
    console.log(maxvalue,count);}
    fn(str)

    //dict中先找第一个值与初始值count比较,将第一个属性值和属性名给count、 -maxvalue;, 通过if语句对这些值筛选,一直for循环筛选出最大的

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

    camelize("background-color") == 'backgroundColor'
    camelize("list-style-image") == 'listStyleImage'

    var strr='hello-world';
    function camelize(str11){
    var str= str11.split('-'); //字符串转换为数组str
    for(var i=1; i< str.length; i++){ //从第二个字符串之后开始循环
    str[i]=str[i].replace(str[i][0],str[i][0].toUpperCase())
    } //对以后的每个字符串的第一个字母大写,并替换掉
    //原来的第一个字母
    return str.join(''); // 还原成字符串
    }
    camelize(strr)

    输出: "helloWorld"

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

    // 一个“字符串” 第一个字母小写 变大写

    ucFirst("hunger") == "Hunger"
    unfist(str)

    str='hunger';
    function fn(str1){
    str2=str1.replace(str[0],str[0].toUpperCase()) // 字符串的第一个字母大写、替换 到 新字符串 str2中
    return str2;}
    fn(str)
    输出: "Hunger"

    注意: replace不能直接改动源字符串的内容

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

    truncate("hello, this is hunger valley,", 10) == "hello, thi...";
    truncate("hello world", 20) == "hello world"

    一个函数有两个参数,一个是字符串,一个是长度值,
    作比较,若字符串获取的长度> 长度值, 则截取字符串substr(开始位置,截取长度)
    若字符串长度< 长度值, 则输出字符串

    var str1='hello, this is hunger valley ';
    var length =10;
    truncate(str1,length);
    function truncate(str, maxlength){
    var bb=str.length;
    if( bb>maxlength){
    var str1= str.substr(0,maxlength)='...';
    console.log(str1)
    } else{
    console.log(str);
    }
    }

    "hello, thi..." // 空格也占一位

    10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?
      1. JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
        JSON语法是 JavaScript 对象表示语法的子集
        JSON之所以流行,是因为可以把JSON数据结构解析为有用的javascript对象
    • 2表示对象:
      值在k:value的键值对中,键 值用" " 包裹
      用, 分隔
      { }保存对象
      [ ]保存数组
      值(value)可以是双引号括起来的字符串(string)、数值(number)、true、
      false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

    json建构于两种基本结构:
    (1) “名称/值”对的集合(无序)——对象
    {
    key1:value1,
    key2:value2,
    ...
    }
    (2) 值的(有序)列表——————数组
    [
    {
    key1:value1,
    key2:value2
    },
    {
    key3:value3,
    key4:value4
    }
    ]

    • 3 window.JSON 是浏览器的内置对象(本地化的JSON对象),用来检测对JSON的支持情况, 首批被浏览器支持的功能之一,所有新的浏览器都支持window.JSON,将来JSON必将大量应用于HTML5应用中
      window.json发展由来

    • 典型的JSON API包含两个函数,parse()和stringify()(分别用于将字符串序列化成DOM对象和将DOM对象转换成字符串)

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

    var hh={
    'name': 'teng',
    'age': 24};

    var bb=JSON.stringify(hh);//对象转字符串
    var hh=JSON.parse(bb);// json转换的字符串可以用parse 转回对象

    console.log(bb); // "{"name":"teng","age":24}"
    console.log(hh);
    // [object Object] {
    age: "24",
    name: "tom",
    sex: "男"
    }

    其他知识:

    JSON 对象可以嵌套使用
    JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串。
    浏览器-- 客户端 ---服务器 之间传输 的数据都是 以字符串的方式传递,
    处理客户端 提交的数据时 一般为了更好的处理数据, 将json 的字符串转换成json对象,(面向对象的方式), 字符串中提取其中的一个属性
    转换为JSON 对象 : JSON.parse()
    JSON 对象转换成jSON格式的字符串: JSON.stringify()

    普通字符串,json字符串和json对象的区别
    字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string';
    json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
    json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };

    创建对象有两种方法,一、new Object()创建一个新对象;二、通过字面量创建法,var obj={}。在对象中的数据,总是以键值对的形式出现,如:name:"孙悟空",当有多个键值对的时候,在每个的结尾有“,”区分。同时,对象的属性可以是对象也可以是函数。
    当我们数据写入一个对象中,我们需要对这个数据进行传输或者存储到计算机的时候怎么办呢?计算机在存储、处理、传输数据时,必须以二进制形式进行。那么当要对一个对象进行传输或者存储的时候,我们就需要先把对象转换为字符串等可以传输的数据,而把对象转为字符串的过程就叫对象序列化。
    对象序列化方式:
    第一种方式是 JSON(JavaScript Object Notation)数据
    JSON数据的格式和 JavaScript字面量创建对象的格式基本相同,唯一的区别是JSON数据中不能有函数,JSON.stringify函数,可以把一个对象转换为JSON字符串,这个函数会自动去除对象中的函数。
    第二种: XML

    json详解
    参考
    参考

    相关文章

      网友评论

          本文标题:字符串与JSON

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