字符串與JSON

1,對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么?

  • 對于HTTP協(xié)議而言,html、css、js、json是符合相應(yīng)語法的字符串
  • 用戶訪問頁面時,瀏覽器根據(jù)用戶請求的路徑,向服務(wù)器發(fā)起請求,服務(wù)器根據(jù)路判斷徑返回給瀏覽器對應(yīng)的字符串,同時也返回給瀏覽器Content-Type值。
  • HTML:Content-Type=text/html,瀏覽器就把字符串當(dāng)HTML進(jìn)行解析;
  • CSS:當(dāng) HTML 中有<link rel="stylesheet" href="" />,瀏覽器再向服務(wù)器發(fā)起請求,服務(wù)器返回字符串和Content-Type=text/css,瀏覽器就把返回的字符串當(dāng) CSS 進(jìn)行解析;
  • JS: 當(dāng)HTML中有<script src="" />,瀏覽器向服務(wù)器發(fā)起請求,服務(wù)器返回字符串和Content-Type=text/javascript,瀏覽器就把字符串當(dāng) JS 進(jìn)行解析,返回給用戶。

2. 使用數(shù)組拼接出如下字符串 ,其中styles數(shù)組里的個數(shù)不定

var data = {
  name: '女裝',
  styles: ['短款', '冬季', '春裝']
};
function getTpl(data){
  var str = '<dl class="product">'
  str = str + "<dt>女裝</dt>"
  for(var key in data.styles){
      str = str + '<dd>' + data.styles[key] + '</dd>'
  }
  str = str + "</dl>"
  return str
}
var result = getTpl(data)
console.log(result)

3.寫出兩種以上聲明多行字符串的方法

var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'

var str ='abcdeabcdeabc\
deancdeabcdea\
bcdeabcdeancd\
eabcdeabcdeabc\
deancdeabcdeab\
cdeabcdeancde'
console.log(str)
var str ='abcdeabcdeabc'
+'deancdeabcdea'
+'bcdeabcdeancd'
+'eabcdeabcdeabc'
+'deancdeabcdeab'
+'cdeabcdeancde'
(function () { /*
deancdeabcdea
bcdeabcdeancd
eabcdeabcdeabc
deancdeabcdeab
cdeabcdeancde
*/}).toString().split('\n').slice(1,-1).join('\n')

4. 補全如下代碼,讓輸出結(jié)果為字符串: hello\饑人谷

var str = "hello\\\\饑人谷"
console.log(str)

5. 以下代碼輸出什么?為什么

var str = 'jirengu\nruoyu'
console.log(str.length)  // 13  \n占據(jù)一個字符

6. 寫一個函數(shù),判斷一個字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是

var str = "abcdcba"
str == str.split('').reverse().join('')

7. 寫一個函數(shù),統(tǒng)計字符串里出現(xiàn)出現(xiàn)頻率最多的字符

 var str = 'aasdgajsdfncjknbvzjnakjfiuhgbvkz';
    var num = {};
    function count(str){
        for(var i=0; i<str.length; i++){
            var oneStr = str.charAt(i);
            if(num[oneStr]){
                num[oneStr]++;
            }else{
                num[oneStr] = 1;
            };
        };
        return num;
    };
    count(str);
    console.log(num);


    var maxAttr = null
    var max = 0;
    for(attr in num){
        if(max<num[attr]){
            max = num[attr];
            maxAttr = attr;
        };
    };


    for(var attr in num){
        if(num[attr] == max){
            alert('出現(xiàn)次數(shù)最多的字符是' + attr);
            alert('出現(xiàn)的次數(shù)是' + max);
        };
    };
</script>

8,寫一個camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串,如

Paste_Image.png

9,寫一個 ucFirst函數(shù),返回第一個字母為大寫的字符 (***)

Paste_Image.png

9,寫一個函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength,會把str 截斷到maxlength長,并加上...,如

Paste_Image.png

10,什么是 JSON格式數(shù)據(jù)?JSON格式數(shù)據(jù)如何表示對象?window.JSON 是什么?

  • 1 JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級數(shù)據(jù)交換格式。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JSON語法是 JavaScript 對象表示語法的子集JSON之所以流行,是因為可以把JSON數(shù)據(jù)結(jié)構(gòu)解析為有用的javascript對象

  • 2表示對象:值在k:value的鍵值對中,鍵 值用" " 包裹用, 分隔{ }保存對象[ ]保存數(shù)組值(value)可以是雙引號括起來的字符串(string)、數(shù)值(number)、true、false、 null、對象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。

json建構(gòu)于兩種基本結(jié)構(gòu):(1) “名稱/值”對的集合(無序)——對象{key1:value1,key2:value2,...}(2) 值的(有序)列表——————數(shù)組[{key1:value1,key2:value2},{key3:value3,key4:value4}]

  • 3 window.JSON 是瀏覽器的內(nèi)置對象(本地化的JSON對象),用來檢測對JSON的支持情況, 首批被瀏覽器支持的功能之一,所有新的瀏覽器都支持window.JSON,將來JSON必將大量應(yīng)用于HTML5應(yīng)用中window.json發(fā)展由來

典型的JSON API包含兩個函數(shù),parse()和stringify()(分別用于將字符串序列化成DOM對象和將DOM對象轉(zhuǎn)換成字符串)

11 ,如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對象?如何把 JS對象轉(zhuǎn)換為 JSON 格式的字符串?

var hh={
'name': 'teng',
'age': 24};
var bb=JSON.stringify(hh);//對象轉(zhuǎn)字符串
var hh=JSON.parse(bb);// json轉(zhuǎn)換的字符串可以用parse 轉(zhuǎn)回對象
console.log(bb); // "{"name":"teng","age":24}"
console.log(hh);
// [object Object] {
age: "24",
name: "tom",
sex: "男"
}
  • JSON 對象可以嵌套使用
    JSON 可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串。
    瀏覽器-- 客戶端 ---服務(wù)器 之間傳輸 的數(shù)據(jù)都是 以字符串的方式傳遞,
    處理客戶端 提交的數(shù)據(jù)時 一般為了更好的處理數(shù)據(jù), 將json 的字符串轉(zhuǎn)換成json對象,(面向?qū)ο蟮姆绞剑?字符串中提取其中的一個屬性
    轉(zhuǎn)換為JSON 對象 : JSON.parse()
    JSON 對象轉(zhuǎn)換成jSON格式的字符串: JSON.stringify()
    普通字符串,json字符串和json對象的區(qū)別
    字符串:這個很好解釋,指使用“”雙引號或’’單引號包括的字符。例如: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" };
  • 創(chuàng)建對象有兩種方法,一、new Object()創(chuàng)建一個新對象;二、通過字面量創(chuàng)建法,var obj={}。在對象中的數(shù)據(jù),總是以鍵值對的形式出現(xiàn),如:name:"孫悟空",當(dāng)有多個鍵值對的時候,在每個的結(jié)尾有“,”區(qū)分。同時,對象的屬性可以是對象也可以是函數(shù)。
    當(dāng)我們數(shù)據(jù)寫入一個對象中,我們需要對這個數(shù)據(jù)進(jìn)行傳輸或者存儲到計算機的時候怎么辦呢?計算機在存儲、處理、傳輸數(shù)據(jù)時,必須以二進(jìn)制形式進(jìn)行。那么當(dāng)要對一個對象進(jìn)行傳輸或者存儲的時候,我們就需要先把對象轉(zhuǎn)換為字符串等可以傳輸?shù)臄?shù)據(jù),而把對象轉(zhuǎn)為字符串的過程就叫對象序列化。
  • 對象序列化方式:
    第一種方式是 JSON(JavaScript Object Notation)數(shù)據(jù)
    JSON數(shù)據(jù)的格式和 JavaScript字面量創(chuàng)建對象的格式基本相同,唯一的區(qū)別是JSON數(shù)據(jù)中不能有函數(shù),JSON.stringify函數(shù),可以把一個對象轉(zhuǎn)換為JSON字符串,這個函數(shù)會自動去除對象中的函數(shù)。
    第二種: XML
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么? HTML就是符合HTML語法的字...
    怎么昵稱閱讀 1,680評論 0 3
  • 一、代碼習(xí)題 1.使用數(shù)組拼接出如下字符串 ,其中styles數(shù)組里的個數(shù)不定 2.寫出兩種以上聲明多行字符串的方...
    徐國軍_plus閱讀 542評論 0 1
  • 0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么? 1.對于HTTP協(xié)議而言,htm...
    saintkl閱讀 637評論 0 0
  • 0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么? 對于HTTP協(xié)議而言,html、...
    Taaaaaaaurus閱讀 348評論 0 1
  • 0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么? HTTP是基于 TCP/IP 協(xié)...
    peaceChierdo閱讀 362評論 0 0

友情鏈接更多精彩內(nèi)容