JS字符串與JSON

1. 使用數組拼接出如下字符串

var prod = {
    name: '女裝',
    styles: ['短款', '冬季', '春裝']
};
function getTplStr(data){
//todo...
};
var result = getTplStr(prod);  //result為下面的字符串
<dl class="product">
    <dt>女裝</dt>
    <dd>短款</dd>
    <dd>冬季</dd>
    <dd>春裝</dd>
</dl>

第一種普通拼接:
function getTplStr(data){
       var str;
       str = "<dl class=\"product\">" + "\n" 
             +  "\t<dt>" 
             + data.name 
             + "</dt>" 
             + "\n" + "\t<dd>" + data.styles[0] + "</dd>"
             + "\n" + "\t<dd>" + data.styles[1] + "</dd>"
             + "\n" + "\t<dd>" + data.styles[2] + "</dd>"
             + "\n" + "</dl>"
return str;
}
var result = getTplStr(prod);
console.log(result);

第二種數組拼接:
function getTplStr2(data){
        var arr = [];
        arr.push("<dl class=\"product\">\n")
        arr.push("\t<dt>"+data.name+"</dt>\n")
    for (var i=0; i<data.styles.length; i++) {
        arr.push("\t<dd>"+data.styles[i]+"</dd>\n")
    }
    arr.push("</dl>")
    return arr.join('');
}
var result = getTplStr2(prod);
console.log(result);

不用轉義符:
function getTplStr3(product) {
  var str = '<dl>'
  str += '     <dt>' + product.name + '</dt>'
  for(var i = 0; i < product.styles.length; i++) {
    str += '   <dd>' + product.styles[i] + '</dd>'
  }
  str += '   </dl>'
  return str;
}

function getTplStr4(product) {
  var htmls = []
  htmls.push('<dl>')
  htmls.push('  <dt>' + product.name + '</dt>')
  for(var i = 0; i < product.styles.length; i++) {
    htmls.push('<dd>' + product.styles[i] + '</dd>')
  }
  htmls.push('</dl>')
  return htmls.join('');
}
console.log(getTpl3(product))
console.log(getTpl4(product))

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

第一種:用"+" 拼接

var str = "abc"
            +"abcd"
            +"abcde"
console.log(str)

第二種:利用注釋厂抖,但是如果采取一些壓縮處理可能會出現問題

(function str(){/*
line 1
line 2
line 3
*/}).toString().split('\n').slice(1,-1).join(\n);

第三種:轉義符\ 但是轉義符后不能有其他字符莫湘,錯誤很不容易發(fā)現

var str ='abc \
abcd \
abcde \
z'

3. 補全如下代碼,讓輸出結果為字符串: hello\饑人谷

var str = "hello\\\\饑人谷"   //補全代碼
console.log(str)        //  hello\\饑人谷

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

var str = 'jirengu\nruoyu'
console.log(str.length)       //13    ,因為\n算一個字符赂蠢。

5. 寫一個函數,判斷一個字符串是回文字符串铃诬,如 abcdcba是回文字符串, abcdcbb不是

var str = "abcdcba";
var str2 = "abcdcbb";
function isPal(str) {
    if(typeof str === "string"){    //判斷是否是字符串
       var result;
       var reverseStr = str.split('').reverse().join('');      // 得到順序顛倒的字符串
       if(reverseStr === str){                      // 判斷顛倒字符串和元字符串是否相等
             result = "yes";
       }else { result = "no"; }
    return result;
  } else {
     console.log("不是字符串");
  }
}
isPal(str);
isPal(str2);

6. 寫一個函數鲫凶,統(tǒng)計字符串里出現出現頻率最多的字符

function mostStr(str){
 if(typeof str === "string"){    //判斷是否是字符串
      var count = {};                                // 聲明空對象
      for(var i=0; i<str.length; i++){          // 遍歷字符串
          if(count[str[i]]){                       // 如果對象中存在字符str[i] ,值加一
              count[str[i]]+=1;
          } else { 
              count[str[i]] = 1;                // 如果對象不存在字符str[i] , 則添加字符str[i] 且賦值為1
          }
      }
         var max = 0, result;             
         for(var k in count ){                // 遍歷對象count
              if(count[k] > max){              // 如果count[k] 值大于 max 兴革,則count[k]的值賦給max
                  max = count[k];
              }
              result = k;                      // 得到頻率最高的字符
         }
         return result;
   } else { console.log("不是字符串") }
}
var str = "addccccccc";
mostStr(str);

7. 寫一個camelize函數,把my-short-string形式的字符串轉化成myShortString形式的字符串蜜唾,如

function camelize(str){
     if(typeof str !== "string"){                  // 檢測是否是字符串
           console.log("不是字符串");
            return;
     }
     var result,arr = [];
     arr = str.split('');                                              
     for(var i=0,j=0; i<arr.length; i++){                   // 思路是把字符串轉換成數組杂曲,然后遍歷數組,如果遍歷到值為"-"的鍵袁余,則下一個鍵字符轉換大寫
         if(arr[i] === "-") {
                j = i+1;
                arr[j] = arr[j].toUpperCase();
         }
      result = arr;
     }
     result = result.join("").split("-").join("");        //把數組轉換成字符串然后再把字符串以"-"拆成數組擎勘,最后再轉換成字符串,達到刪除"-"的目的
     return result;
}


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

8. 寫一個 ucFirst函數颖榜,返回第一個字母為大寫的字符 (***)

function ucFirst(str){
     if(typeof str !== "string"){                  // 檢測是否是字符串
           console.log("不是字符串");
            return;
     }
    str=str.replace(str[0],str[0].toUpperCase());
    return str;
}

ucFirst("hunger") == "Hunger"

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

function truncate(str,maxlength) {
     if((typeof str !== "string") || (typeof maxlength !== "number")){
          console.log("參數不合法!");
          return;
     }
    if(str.length > maxlength) {
         str = str.substring(0,maxlength) + "...";
    } 
   return str;
}

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

10. 什么是 json噪漾?什么是 json 對象硼砰?什么是 json 對象字面量?什么是 JSON內置對象欣硼?

  • json(javascript object notation)的縮寫是一種用于數據交換的文本格式题翰,目的是取代繁瑣的xml。具有書寫簡單分别,一目了然遍愿,符號javascript原生語法存淫,可以由解釋引擎直接處理耘斩,不用另外添加解析代碼。所以桅咆,json迅速被接受括授,成為es5標準的一部分。
  • json對象就是json的值岩饼,基本要符合以下規(guī)則
    • 復合類型的值只能是數組或對象荚虚,不能是函數、正則表達式對象籍茧、日期對象版述。
    • 簡單類型的值只有四種:字符串、數值(必須以十進制表示)寞冯、布爾值和null
    • 字符串必須使用雙引號表示渴析,不能使用單引號
    • 對象的鍵名必須放在雙引號里面
    • 數組或對象最后一個成員的后面,不能加逗號
  • json對象字面量是一種簡單的描述以及聲明方式吮龄。
  • JSON是javascript中的內置對象俭茧,提供了JSON.parse()、JSON.stringify()等方法漓帚。

11. 如何把JSON 格式的字符串轉換為對象母债?如何把對象轉換為 JSON 格式的字符串?

  • 使用JSON.parse()轉換為對象,用JSON.stringify()轉換為字符串
  • 如:var str = {name:"jirengu",age:2}
    • var obj=JSON.parse(str)尝抖,//轉為對象
    • var newstr=JSON.stringify(obj).//轉為字符串
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末毡们,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子昧辽,更是在濱河造成了極大的恐慌衙熔,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奴迅,死亡現場離奇詭異青责,居然都是意外死亡挺据,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門脖隶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扁耐,“玉大人,你說我怎么就攤上這事产阱⊥癯疲” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵构蹬,是天一觀的道長王暗。 經常有香客問我,道長庄敛,這世上最難降的妖魔是什么俗壹? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮藻烤,結果婚禮上绷雏,老公的妹妹穿的比我還像新娘。我一直安慰自己怖亭,他們只是感情好涎显,可當我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兴猩,像睡著了一般期吓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倾芝,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天讨勤,我揣著相機與錄音,去河邊找鬼蛀醉。 笑死悬襟,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拯刁。 我是一名探鬼主播脊岳,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垛玻!你這毒婦竟也來了割捅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤帚桩,失蹤者是張志新(化名)和其女友劉穎亿驾,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體账嚎,經...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡莫瞬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年儡蔓,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疼邀。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂江,死狀恐怖,靈堂內的尸體忽然破棺而出旁振,到底是詐尸還是另有隱情获询,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布拐袜,位于F島的核電站吉嚣,受9級特大地震影響,放射性物質發(fā)生泄漏蹬铺。R本人自食惡果不足惜尝哆,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丛塌。 院中可真熱鬧较解,春花似錦畜疾、人聲如沸赴邻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姥敛。三九已至,卻和暖如春瞎暑,著一層夾襖步出監(jiān)牢的瞬間彤敛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工了赌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留墨榄,地道東北人。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓勿她,卻偏偏與公主長得像袄秩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子逢并,可洞房花燭夜當晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內容

  • 1之剧、使用數組拼接出如下字符串 直接拼接法 數組拼接法 2、寫出兩種以上聲明多行字符串的方法 “+”連接 轉義符\ ...
    高進哥哥閱讀 352評論 0 0
  • 常見的字符串方法: 長度計算及連接 字符串截取var str = "hello world";//第一個是開始位置...
    草鞋弟閱讀 519評論 0 0
  • 字符串方法,數組的方法,字符串與數組相互轉換,回文,JSON 1.使用數組拼接出如下字符串 2.寫出兩種以上聲明多...
    好奇而已閱讀 352評論 0 0
  • 一砍聊、使用數組拼接出如下字符串 二背稼、寫出兩種以上聲明多行字符串的方法 三、補全如下代碼,讓輸出結果為字符串: hel...
    崔敏嫣閱讀 264評論 0 0
  • bash的常見特性 bash的常見特性有很多玻蝌,本次的議題如下: 命令展開特性和命令的執(zhí)行狀態(tài)特性 相關演示實例 命...
    香吉矢閱讀 879評論 0 0