字符串和JSON
2017-08-01 本文已影响0人
南山码农
0、对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么?
对于http协议而言,html,css,js,json都是一些字符串,只不过是他们符合某些特定的语法,而能被浏览器解读。
1、使用数组拼接出如下字符串 ,其中styles数组里的个数不定
var prod = {
name: '女装',
styles: ['短款', '冬季', '春装']
};
function getTplStr(data){
var str='<dl class="product">'
str+='<dt>'+data.name+'</dt>';
for(i=0;i<data.styles.length;i++){
str+='<dd>'+data.styles[i]+'</dd>';
console.log(1);
}
return str+'</dl>';//todo...
};
var result = getTplStr(prod); //result为下面的字符串
<dl class="product"><dt>女装</dt><dd>短款</dd<dd>冬季</dd><dd>春装</dd></dl>
Paste_Image.png
2、写出两种以上声明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
这段字符串很长,如何多行优雅的显示
var str='abcdeabcdeabcdeancde'
+'abcdeabcdeabcdeancde'
+'abcdeabcdeabcdeancde'
+'abcdeabcdeabcdeancde';
var str='abcdeabcdeabcdeancde\
abcdeabcdeabcdeancde\
abcdeabcdeabcdeancde\
abcdeabcdeabcdeancde';
(function () { /*
abcdeabcdeabcde
abcdeabcdeabcde
abcdeabcdeabcde
abcdeabcdeabcde
abcdeabcdeabcde
*/}).toString().split('\n').slice(1,-1).join('\n')
3、补全如下代码,让输出结果为字符串: hello\\饥人谷
var str ='hello\\\\饥人谷' //补全代码
console.log(str)
4、以下代码输出什么?为什么
var str = 'jirengu\nruoyu'
console.log(str.length) //13 \n是一个换行符,占一个字符
5、写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
var str = 'abcdedcba';
function isReverse(newStr){
return newStr === newStr.split('').reverse().join('')
}
console.log( isReverse(str)) // true
var str='abcdedcba';
function isReverse(newStr){
for(i=0;i<newStr.length;i++){
if(newStr.charAt(i)==newStr.charAt(newStr.length-1-i)){ }else{
return false;
}
}
return true;
}
console.log( isReverse(str)) //true
var str = 'abcdedcba'
function isReverse(newStr){
var arr1 = [];
var arr2 = newStr.split('');
var i = 0;
for(var n = 0; n < arr2.length; n++){
arr1[i] = arr2[arr2.length-1-n];
i++;
}
return arr1.join('') === arr2.join(''); // arr1 和 arr2是数组,要连成字符串比较。
}
isReverse(str); // true
6、写一个函数,统计字符串里出现出现频率最多的字符
var str = 'hello world yhhhhhhh';
function fn(str){
var obj = {};
for(var i in str){
if(obj[str[i]]){
obj[str[i]]++;
}else{
obj[str[i]] = 1;
}
} /*把字符串统计成对象*/
var count = 0;
var maxValue;
for(var key in obj){
if(obj[key] > count){
count = obj[key];
maxValue = key;
}
} /*遍历对象寻找最大的键值和键名*/
return 'maxValue: ' + maxValue + '\n' + 'count: ' + count;
}
fn(str);
7、写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如
function camelize(str){
var arr = str.split('-');
var newArr = [];
for(var i in arr){
newArr[i] = arr[i].replace(arr[i][0],arr[i][0].toUpperCase())
}
newArr.join();
return newArr.join('');
}
camelize("background-color") == 'BackGroundColor'
camelize("list-style-image") == 'ListStyleImage'
8、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
function ucFirst(str){
var newStr = str.replace(str[0], str[0].toUpperCase());
return newStr;
}
ucFirst("hunger") // "Hunger"
ucFirst("hunger") == "Hunger"
9、写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如
function trunCate(str,maxlength){
var newStr='';
if(str.length>maxlength){
newTtr=str.substr(0,maxlength)+'...';
}else {
newStr=str;
}
return newstr;
}
trunCate("hello, this is hunger valley,", 10) == "hello, thi...";
trunCate("hello world", 20) == "hello world"
10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?
-
JSON
(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于javaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括:c,c++,c#,Java,JavaScript,Perl,Pythone等)这些特性是JSON成为理解的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。 -
JSON语法
JSON语法是JavaScript对象表示语法的子集
1.数据在名称/值对中
2.数据由逗号分离
3.花括号保存对象
4.方括号保存数组
JSON数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开。
var json = {"name":"Byron","age":24}
var json2 = [
{"name":"Byron","age":24},
{"name":"Byron2","age":27}
]
- window.JSON
1、window.JSON是浏览器的内置对象,用来检测对JSON的支持情况。
2、JSON对象内置了JSON.parse()、JSON.stringify()。
3、IE8版本以上才内置支持JSON.parse()函数方法
11、如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?
- 原生支持
IE以上浏览器都支持了一个对象JSON,JSON对象主要有两个『静态』函数
1.parse:把字符串转化为JSON对象
2.stringify:把JSON对象转化为字符串(出人意料的不叫toString,因为不是实例方法)
var json = {
"name": "Byron",
"age": 24
};
var json_str = JSON.stringify(json);
console.log(json_str);
console.log(JSON.parse(json_str));
- eval(不推荐使用)
邪恶的eval出现了,以前很多人图省事用eval把字符串转为json
var json_str = '{"name": "Byron", "age": 24}';
var json = eval('(' + json_str + ')');
console.log(json);