String、JSON

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

var prod = {
    name: '女裝',
    styles: ['短款', '冬季', '春裝']
};
function getTpl(data){
//todo...
};

var result = getTplStr(prod);  //result為下面的字符串
<dl class="product"><dt>女裝</dt><dd>短款</dd<dd>冬季</dd><dd>春裝</dd></dl>
解:
//  轉義字符
//  \'  單引號
//  \"  雙引號
//  \&  和號
//  \\  反斜杠
//  \n  換行符
//  \r  回車符
//  \t  制表符
//  \b  退格符
//  \f  換頁符

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

var arr = []

function getStr(data) {
  arr.push('<dl class="product"><dt>')
  arr.push(data.name + '</dt>')
  for (var i in data.styles) {
    arr.push("<dd>" + data.styles[i] + "</dd>")
  }
  arr.push("</dl>")
  return arr.join('')
}
var result = getStr(prod)
console.log(result)

//輸出結果:
//<dl class="product"><dt>女裝</dt><dd>短款</dd<dd>冬季
//</dd><dd>春裝</dd></dl>

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

例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
這段字符串很長,如何多行優(yōu)雅的顯示

  1. 字符串相加
var str = ' ' + 
'abcdeabcdea' +
'bcdeancdeab' +
'cdeabcdeabcd'...
  1. 反斜線
var str = '\
acdgasfga\
asfgasfgsd\
asfgsdgsdg\'
  1. 字符串數(shù)組join
var str = [
  'asfgsdg', 
  'asfdsgb',
  'afsdggs',
].join('')
  1. ES6
var str = `asdagadg
              asfgadg
              asfadg`

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

var str = //補全代碼 console.log(str)

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

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

var str = 'jirengu\nruoyu' console.log(str.length)
輸出13,\n中空格并沒有算在長度里面,并且\n占了一個占位符

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

function palindrome(str) {
  // Good luck!
  var newStr = str.replace(/\W+/g, '') //匹配所有非單詞的字符,替換為空字符串
  newStr = newStr.replace(/\_+/g, '') //匹配所有下劃線,替換為空字符串 
  newStr = newStr.toLowerCase()
  //轉化字符串為小寫
  var arr1 = newStr.split('')
  var arr2 = arr1.reverse()

  var newStr2 = arr2.join('')
  //重構倒序的字符串

  if (newStr == newStr2) { //比較1
    return true
  } else {
    return false
  }
}


// function palindrome(str) {
//   return str.replace(/[\W_]/g, '').toLowerCase() === str.replace(/[\W_]/g, '').toLowerCase().split('').reverse().join('')
// }

console.log(palindrome('abcdcba'))//true
console.log(palindrome("今天好開心開好天今"))//true
console.log(palindrome('3653745856'))//false

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

// 1.字符串轉為數(shù)組進行排序,以便正則選出相同的挨在一起的字符
// 2.通過正則replace()方法的兩個參數(shù),來匹配出現(xiàn)最多的字符和數(shù)量
var str = "sssfgtklvlksdcndfssddfsssfssss"
var num = 0
var value = null

function max() {
  var new_str = str.split("").sort().join("")
  var re = /(\w)\1+/g; //沒有\(zhòng)1,re就是一整個排好序的字符串,有了\1就是出現(xiàn)過的有重復的取出來,\1表示跟前面第一個子項是相同的
  new_str.replace(re, function ($0, $1) { //$0代表取出來重復的一個個整體,如[s,s...],[f,f..],[d,d....] $1代表這個整體里的字符
    if (num < $0.length) {
      num = $0.length
      value = $1
    }
  })
  console.log(value + ":" + num)
}
max(str)

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

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

function cssStyle2DomStyle(sName){
    var chars = sName.split('-')
    var arr = []
    for(var i=0;i<chars.length;i++){
        if(chars[i] != '')
            arr.push(chars[i])
    }
    var str =arr[0].toString()
    for(var j=1;j<arr.length;j++){
        str += arr[j].toString().substring(0,1).toUpperCase() + arr[j].toString().substring(1)
    }
    return str
}

var sName = 'list-style-image'
result = cssStyle2DomStyle(sName)
console.log(result)   //listStyleImage

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

ucFirst("hunger") == "Hunger"

const fn = (str) => {
  return str.charAt(0).toUpperCase(str.charAt(0)) + str.substring(1)
}
let str = "hello jiRenGu"
console.log(fn(str))//Hello jiRenGu

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

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

function truncate(str, maxlen) {
  if(str.length > maxlen) {
    return str.substr(0, maxlen) + '...'
  }else {
    return str
  }
}

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

  • json是輕量級的數(shù)據(jù)交換格式,它基于javascript的一個子集。Json完全采用獨立于語言的文本格式,但是也使用了C語言家族的習慣。這些特性使json成為理想的交換語言。易于人閱讀和編寫,同時也易于機器解析和生成(網(wǎng)絡傳輸速度)。
    json語言是 JavaScript 對象表示語法的子集,json中只能包含一個值。值就是json表示的對象,同時應該符合以下規(guī)律:
    數(shù)據(jù)在名稱/值對中;數(shù)據(jù)由逗號分隔;花括號保存對象;方括號保存數(shù)組
  • JSON 數(shù)據(jù)的書寫格式是:名稱/值對,名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在后面(同樣在雙引號中),中間用冒號隔開
  • JSON是一種相對來說比較新并且正在日益流行的數(shù)據(jù)交換格式。作為JavsScript語法的一個子集,它將數(shù)據(jù)表示為對象字面量。典型的JSON API包含兩個函數(shù),parse()和stringify()(分別用于將字符串序列化成DOM對象和將DOM對象轉換成字符串)。

11、如何把JSON 格式的字符串轉換為 JS 對象?如何把 JS對象轉換為 JSON 格式的字符串?

  • parse:把字符串轉化為JSON對象
  • stringify:把JSON對象轉化為字符串
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質都是什么? HTML就是符合HTML語法的字...
    怎么昵稱閱讀 1,632評論 0 3
  • 1.使用數(shù)組拼接出如下字符串 };```function getTpl(data){var arr = "";fo...
    湖衣閱讀 323評論 0 0
  • 0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質都是什么? 1.對于HTTP協(xié)議而言,htm...
    saintkl閱讀 587評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,919評論 18 139
  • 有人說,不明白蚊子在生物圈里發(fā)揮的作用,我簡直不能在同意了。但現(xiàn)在,我卻有了新的看法。 早就了解到,上大學會改變一...
    我是勝熊糯米糕閱讀 303評論 0 1