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)雅的顯示
- 字符串相加
var str = ' ' +
'abcdeabcdea' +
'bcdeancdeab' +
'cdeabcdeabcd'...
- 反斜線
var str = '\
acdgasfga\
asfgasfgsd\
asfgsdgsdg\'
- 字符串數(shù)組join
var str = [
'asfgsdg',
'asfdsgb',
'afsdggs',
].join('')
- 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對象轉化為字符串