字符串与JSON
2017-06-19 本文已影响0人
饥人谷_Leon
1、使用数组拼接出如下字符串
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'
这段字符串很长,如何多行优雅的显示
- 方法一:
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、写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
var str = 'abcdcba'
function palindrome(str){
return str === str.split("").reverse().join();
}
console.log(palindrome(str))
6、写一个函数,统计字符串里出现出现频率最多的字符
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函数,把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函数,返回第一个字母为大写的字符 (***)
function ucFirst(str){
var arr = str.split('')
arr[0] = arr[0].toUpperCase()
return arr.join('')
}
ucFirst("hunger") == "Hunger"
9、写一个函数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格式数据?JSON格式数据如何表示对象?window.JSON 是什么?
JSON格式(JavaScript Object Notation的缩写)是一种用于数据交换的文本格式,2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。
相比XML格式,JSON格式有两个显著的优点:书写简单,一目了然;符合JavaScript原生语法,可以由解释引擎直接处理,不用另外添加解析代码。所以,JSON迅速被接受,已经成为各大网站交换数据的标准格式,并被写入ECMAScript 5,成为标准的一部分。
JSON对值的类型和格式有严格的规定。
- 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
- 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能-
- 使用NaN, Infinity, -Infinity和undefined)。
- 字符串必须使用双引号表示,不能使用单引号。
- 对象的键名必须放在双引号里面。
- 数组或对象最后一个成员的后面,不能加逗号。
JSON格式数据如何表示对象?
- 对象用{}表示
- 键值对之间用“,”分隔
- 键名跟键之间用‘:’分隔,值可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 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;
}
} // 不能使用函数和日期对象
需要注意的是,空数组和空对象都是合格的JSON值,null本身也是一个合格的JSON值。
window.JSON是全局对象,用于判断浏览器是否兼容JSON的用法。
11、如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?
JSON.parse()
将一个字符串解析为JSON,可选地转换生成的值及其属性,并返回值。
JSON.stringify()
返回与指定值相对应的一个JSON字符串,可选地仅包含某些属性或以用户定义的方式替换属性值。