1、使用數(shù)組拼接出如下字符串
var prod = {
name: '女裝',
styles: ['短款', '冬季', '春裝']
};
function getTpl(data){
var arr = ['<dl class="product">']
arr.push('<dt>'+data.name+'</dt>')
for ( var i = 0; i < data.styles.length; i++){
arr.push('<dd>' + data.styles[i] + '</dd>')
}
arr.push('</dl>')
console.log(arr.join(''))
return (arr.join(''))
};
var result = getTpl(prod); //result為下面的字符串
<dl class="product">
<dt>女裝</dt>
<dd>短款</dd>
<dd>冬季</dd>
<dd>春裝</dd>
</dl>
2、寫出兩種以上聲明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
這段字符串很長,如何多行優(yōu)雅的顯示
- 方法一:
var str = 'abcde'
+'abcde'
+'abcde'
+'abcde'
+'abcde'
- 方法二:
var str= 'abcde\
abcde\
abcde\
abcde\
abcde\
abcde'
3、補全如下代碼,讓輸出結果為字符串: hello\饑人谷
var str ='hello\\'+'\\饑人谷' //補全代碼
console.log(str)
var str ='hello\\\\饑人谷' //補全代碼
console.log(str)
4、以下代碼輸出什么?為什么
var str = 'jirengu\nruoyu'
console.log(str.length)//13\n是一個字符表示換行
5、寫一個函數(shù),判斷一個字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
var str = 'abcdcba'
function palindrome(str){
return str === str.split("").reverse().join();
}
console.log(palindrome(str))
6、寫一個函數(shù),統(tǒng)計字符串里出現(xiàn)出現(xiàn)頻率最多的字符
var str = 'sldjfld jsjfoisdjfdffffffffffffffffffffffffffffffffffffsfkds lsdjfoisdjfosdhfdlgsjosjf lsjfsufoiwjhfhg dss lsdjfls'
function frequency(str){
var obj = {}
for ( var i = 0 ; i < str.length; i++){
if (obj[str[i]]){
++obj[str[i]]
}else{
obj[str[i]] = 1
}
}
var max = 0,
moststr
for(var key in obj){
if ( obj[key] > max ){
max = obj[key]
moststr = key
}
}
console.log(moststr+':'+max)
}
frequency(str)
7、寫一個camelize函數(shù),把my-short-string形式的字符串轉化成myShortString形式的字符串,如
function camelize(str){
var arr = str.split('')
console.log(arr)
for( var i = 0; i < arr.length; i++){
console.log(arr.length)
if ( arr[i] === "-" ){
arr.splice( i ,1)
arr[i] = arr[i].toUpperCase()
i--
console.log(arr)
}
}
console.log(arr.join(''))
return arr.join('')
}
camelize("background--color") == 'backgroundColor'
camelize("list-style--image") == 'listStyleImage'
8、寫一個 ucFirst函數(shù),返回第一個字母為大寫的字符 (***)
function ucFirst(str){
var arr = str.split('')
arr[0] = arr[0].toUpperCase()
return arr.join('')
}
ucFirst("hunger") == "Hunger"
9、寫一個函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength,會把str截斷到maxlength長,并加上...,如
function truncate(str,maxlength){
if ( str.length > maxlength ){
str = str.substr(0,maxlength) + '...'
}
console.log(str)
return str
}
truncate("hello, this is hunger valley,", 10) == "hello, thi...";
truncate("hello world", 20) == "hello world"
10、什么是 JSON格式數(shù)據(jù)?JSON格式數(shù)據(jù)如何表示對象?window.JSON 是什么?
JSON格式(JavaScript Object Notation的縮寫)是一種用于數(shù)據(jù)交換的文本格式,2001年由Douglas Crockford提出,目的是取代繁瑣笨重的XML格式。
相比XML格式,JSON格式有兩個顯著的優(yōu)點:書寫簡單,一目了然;符合JavaScript原生語法,可以由解釋引擎直接處理,不用另外添加解析代碼。所以,JSON迅速被接受,已經(jīng)成為各大網(wǎng)站交換數(shù)據(jù)的標準格式,并被寫入ECMAScript 5,成為標準的一部分。
JSON對值的類型和格式有嚴格的規(guī)定。
- 復合類型的值只能是數(shù)組或對象,不能是函數(shù)、正則表達式對象、日期對象。
- 簡單類型的值只有四種:字符串、數(shù)值(必須以十進制表示)、布爾值和null(不能-
- 使用NaN, Infinity, -Infinity和undefined)。
- 字符串必須使用雙引號表示,不能使用單引號。
- 對象的鍵名必須放在雙引號里面。
- 數(shù)組或對象最后一個成員的后面,不能加逗號。
JSON格式數(shù)據(jù)如何表示對象?
- 對象用{}表示
- 鍵值對之間用“,”分隔
- 鍵名跟鍵之間用‘:’分隔,值可以是合法的 JSON 數(shù)據(jù)類型(字符串, 數(shù)字, 對象, 數(shù)組, 布爾值或 null)
- 字符串必須使用雙引號表示,不能使用單引號。
- 對象的鍵名必須放在雙引號里面。
- 對象最后一個成員的后面,不能加逗號
以下是合格的JSON值。
["one", "two", "three"]
{ "one": 1, "two": 2, "three": 3 }
{"names": ["張三", "李四"] }
[ { "name": "張三"}, {"name": "李四"} ]
以下是不合格的JSON值。
{ name: "張三", 'age': 32 } // 屬性名必須使用雙引號
[32, 64, 128, 0xFFF] // 不能使用十六進制值
{ "name": "張三", "age": undefined } // 不能使用undefined
{ "name": "張三",
"birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),
"getName": function() {
return this.name;
}
} // 不能使用函數(shù)和日期對象
需要注意的是,空數(shù)組和空對象都是合格的JSON值,null本身也是一個合格的JSON值。
window.JSON是全局對象,用于判斷瀏覽器是否兼容JSON的用法。
11、如何把JSON 格式的字符串轉換為 JS 對象?如何把 JS對象轉換為 JSON 格式的字符串?
JSON.parse()
將一個字符串解析為JSON,可選地轉換生成的值及其屬性,并返回值。
JSON.stringify()
返回與指定值相對應的一個JSON字符串,可選地僅包含某些屬性或以用戶定義的方式替換屬性值。