JS字符串與JSON

1. 使用數(shù)組拼接出如下字符串

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);

第二種數(shù)組拼接:
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);

不用轉(zhuǎn)義符:
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)

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

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

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

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

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

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

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

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

5. 寫一個函數(shù),判斷一個字符串是回文字符串,如 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. 寫一個函數(shù),統(tǒng)計字符串里出現(xiàn)出現(xiàn)頻率最多的字符

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函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成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++){                   // 思路是把字符串轉(zhuǎn)換成數(shù)組,然后遍歷數(shù)組,如果遍歷到值為"-"的鍵,則下一個鍵字符轉(zhuǎn)換大寫
         if(arr[i] === "-") {
                j = i+1;
                arr[j] = arr[j].toUpperCase();
         }
      result = arr;
     }
     result = result.join("").split("-").join("");        //把數(shù)組轉(zhuǎn)換成字符串然后再把字符串以"-"拆成數(shù)組,最后再轉(zhuǎn)換成字符串,達(dá)到刪除"-"的目的
     return result;
}


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

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

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

ucFirst("hunger") == "Hunger"

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

function truncate(str,maxlength) {
     if((typeof str !== "string") || (typeof maxlength !== "number")){
          console.log("參數(shù)不合法!");
          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內(nèi)置對象?

  • json(javascript object notation)的縮寫是一種用于數(shù)據(jù)交換的文本格式,目的是取代繁瑣的xml。具有書寫簡單,一目了然,符號javascript原生語法,可以由解釋引擎直接處理,不用另外添加解析代碼。所以,json迅速被接受,成為es5標(biāo)準(zhǔn)的一部分。
  • json對象就是json的值,基本要符合以下規(guī)則
    • 復(fù)合類型的值只能是數(shù)組或?qū)ο螅荒苁呛瘮?shù)、正則表達(dá)式對象、日期對象。
    • 簡單類型的值只有四種:字符串、數(shù)值(必須以十進(jìn)制表示)、布爾值和null
    • 字符串必須使用雙引號表示,不能使用單引號
    • 對象的鍵名必須放在雙引號里面
    • 數(shù)組或?qū)ο笞詈笠粋€成員的后面,不能加逗號
  • json對象字面量是一種簡單的描述以及聲明方式。
  • JSON是javascript中的內(nèi)置對象,提供了JSON.parse()、JSON.stringify()等方法。

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

  • 使用JSON.parse()轉(zhuǎn)換為對象,用JSON.stringify()轉(zhuǎn)換為字符串
  • 如:var str = {name:"jirengu",age:2}
    • var obj=JSON.parse(str),//轉(zhuǎn)為對象
    • var newstr=JSON.stringify(obj).//轉(zhuǎn)為字符串
最后編輯于
?著作權(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)容

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

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