1、使用数组拼接出如下字符串
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>
答:
var prod = {
name: '女装',
styles: ['短款','冬季','春装']
}
function getTpl(data){
var arr = []
arr.push('<dl class=\"product\">\n')
arr.push('\t<dt>'+data.name+'</dt>\n')
for(var key in data.styles){
arr.push('\t<dd>'+data.styles[key]+'</dd>\n')
}
arr.push('</dl>')
return arr.join('');
}
var result = getTpl(prod)
console.log(result)
2、写出两种以上声明多行字符串的方法
1. 第一种当然是使用,转义字符.
var str = "你好\nWorld!"
console.log(str);
2. 第二种也是使用,转义字符,只不过,这次我们把字符串,多空出一段距离.
var str = "你好\n\
World\n\
!";
console.log(str);
3. 第三种,我们要使用,数组的join内置方法进行转换.
var str = ["line1","line2","line3"];
var obj = str.join("\n");
console.log(obj);
4. "+"连接
var str = 'luoqian'
+'is'
+'very'
+'good'
+'!'
3、补全如下代码,让输出结果为字符串: hello\饥人谷
var str = //补全代码
console.log(str)
答:
var str = 'hello\\\\饥人谷'
console.log(str)
4、以下代码输出什么?为什么
var str = 'jirengu\nruoyu'
console.log(str.length)
- 输出13。使用了\n换行,占一个字符,空格不计算在长度内。
5、写一个函数,判断一个字符串是否回文字符串,如 abcdcba是回文字符串, abcdcbb不是
function isPalindrome(str){
newstr = str.split('').reverse('').join('')
if(newstr === str){
console.log('这是回文字符串')
}else{
console.log('这不是回文字符串')
}
}
var str ='abcdcba'
isPalindrome(str)
6、写一个函数,统计字符串里出现出现频率最多的字符
function getMost(str){
var obj = {}
for(var i = 0;i<str.length;i++){
if(obj[str[i]]){
++obj[str[i]]
}else{
obj[str[i]] = 1
}
}
var count = 0
var mostTimes
for(var key in obj){
if(obj[key] > count){
count = obj[key]
mostTimes = key
}
}
return "出现最多次数字符的是:" + mostTimes + ",一共出现了" + count +"次。"
}
var str = 'hello world'
var a = getMost(str)
console.log(a)
7、写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
function camelize(str){
var arr = str.split('-')
var newarr = arr[0]
for(var i = 1; i < arr.length; i++){
newarr += arr[i].charAt(0).toUpperCase() + arr[i].slice(1,arr[i].length)
}
return newarr
}
console.log(camelize("background-color"))
console.log(camelize("list-style-image"))
8、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
ucFirst("hunger") == "Hunger"
function ucFirst(str){
var a = str.charAt(0).toUpperCase()
var b = str.substring(1)
return a + b
}
console.log(ucFirst('hungry'))
或者:
function ucFirst(str){
var arr = [];
arr.push(str[0].toUpperCase());
for(var i=1;i<str.length;i++){
arr.push(str[i])
}
var str2 = arr.join('');
return str2
}
console.log(ucFirst("hunger") )
9、写一个函数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,maxlength){
if(str.length > maxlength){
var newstr = str.slice(0,maxlength) + "..."
}else{
return str
}
return newstr
}
console.log(truncate("hello, this is hunger valley,", 10))
console.log(truncate("hello world", 20))
10、什么是 json?什么是 json 对象?什么是 json 对象字面量?什么是 JSON内置对象?
- JSON是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。
- JSON对象是一个值,要么是简单类型的值,要么是复合类型的值,但是只能是一个值。JSON对值的要求:
复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
字符串必须使用双引号表示,不能使用单引号。
对象的键名必须放在双引号里面。
数组或对象最后一个成员的后面,不能加逗号。 - json对象字面量是一种简单的描述以及声明方式
- JSON内置对象 parse、stringify方法
11、如何把JSON 格式的字符串转换为对象?如何把对象转换为 JSON 格式的字符串?
- JSON.parse()方法 把JSON 格式的字符串转换为对象
- JSON.stringify()方法 对象转换为 JSON 格式的字符串
var str = {
name: "haha",
age:20
}
console.log(JSON.stringify(str))
console.log(JSON.parse(JSON.stringify(str)))