1、使用数组拼接出如下字符串 ,其中styles数组里的个数不定
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 getTplStr(data){
var arr = [];
arr.push(' <dl class="product">\n');
arr.push(' <dt>'+data.name+'</dt>\n');
for (var i=0;i<data.styles.length;i++){
arr.push(' <dd>'+data.styles[i]+'</dd>\n')
}
arr.push('</dl>');
console.log(arr.join(" "));
}
var result = getTplStr(prod);
2、写出两种以上声明多行字符串的方法
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
这段字符串很长,如何多行优雅的显示
方法一:
var str = `abcdeabcde
abcdeancde
abcdeabcde
abcdeancde
abcdeabcde
abcdeancde
abcdeabcde
abcdeancde`;
console.log(str);
方法二:
var str = 'abcdeabcde\nabcdeancde\nabcdeabcde\nabcdeancde\nabcdeabcde\nabcdeancde'
console.log(str);
3、补全如下代码,让输出结果为字符串: hello\饥人谷
var str = "hello\\\\饥人谷"
console.log(str)
4、以下代码输出什么?为什么
var str = 'jirengu\nruoyu'
console.log(str.length)
//13 因为\n被当做字符串
5、写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
方法一:
function palindrome(str) {
return str == str.split('').reverse().join('');
}
console.log(palindrome('abcdedcba'));
方法二:
function palindrome(str) {
for(var i = 0;i<str.length;i++){
if(str[i]!==str[str.length-(i+1)]){
return false
}
}
return true
}
console.log(palindrome('abjldjk'));
console.log(palindrome('abcdedcba'));
6、写一个函数,统计字符串里出现出现频率最多的字符
var str= 'hello world , me hahahehou hei'
var dict= { }
for (var i=0; i<str.length; i++){
if (dict[str[i]]){
++dict[str[i]]
}else{
dict[str[i]] = 1
}
}
var count = 0
var maxValue
for (key in dict){
if(dict[key] > count){
maxValue = key
count = dict[key]
}
}
console.log (count,maxValue)
7、写一个camelize
函数,把my-short-string
形式的字符串转化成myShortString
形式的字符串,如
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
function camelize(str){
var arr = []
for(var i = 0;i < str.length;i++){
if(str[i] == '-'){
// 判断-,之后不用判断c
arr.push(str[i+1].toUpperCase())
i++
}else{
arr.push(str[i])
}
}
var string = arr.join('')
console.log(string)
}
camelize("background-color")
8、写一个 ucFirst函数,返回第一个字母为大写的字符
ucFirst("hunger") == "Hunger"
方法一:
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"))
方法二:
function ucFirst(str){
var str1 = str[0].toUpperCase()
for(var i = 1;i<str.length;i++){
str1 += str[i]
}
return str1
}
console.log(ucFirst("hunger")) //"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 str1 = str.substr(0,maxlength) + "..."
return str1
}
return str
}
console.log(truncate("hello, this is hunger valley,", 10)) //"hello, thi..."
console.log(truncate("hello world", 20)) //"hello world"
10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?1
-
JSON格式数据?
- JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式
- JSON 对值的类型和格式有严格的规定。
- 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
- 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
- 字符串必须使用双引号表示,不能使用单引号。
- 对象的键名必须放在双引号里面。
- 数组或对象最后一个成员的后面,不能加逗号。
-
JSON格式数据如何表示对象?
- 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
-
window.JSON 是什么?
- window.JSON是ECMAScript 5定义的一个原生的浏览器内置对象,用来检测对JSON的支持情况;
- JSON对象内置了JSON.parse()和JSON.stringify()方法;
- 当HTML页面指定了DOCTYPE且浏览器模式为IE8时,才支持内置的window.JSON对象,IE8版本以上才内置支持JSON.parse()函数方法。
11、如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?
-
JSON.parse()
- JSON.parse方法用于将JSON字符串转化成对象
-
JSON.stringify()
- JSON.stringify方法用于将一个值转为字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原。