blog
blog copied to clipboard
字符串与JSON
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>
代码:
function getTpl(obj){
var arr=[];
var str='';
var str1='';
var str2='';
for (var key in obj){
arr.push(obj[key])
}
str1='<dt>'+arr[0]+'</dt>'
for (var i=1; i<arr.length; i++){
for (var j=0; j<arr[i].length; j++){
str2+='<dd>'+arr[i][j]+'</dd>'
}
}
str='<dl class="product">'+str1+str2+'</dl>';
return str;
}
console.log(getTpl(prod))
2、写出两种以上声明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
这段字符串很长,如何多行优雅的显示
方法1:(注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。)
var str =
'abcdeabcdeabcdeancde\
abcdeabcdeabcdeancde\
abcdeabcdeabcdeancdea\
bcdeabcdeabcdeancde';
console.log(str)
方法2:
var str =
'abcdeabcdeabcdeancde'
+'abcdeabcdeabcdeancde'
+'abcdeabcdeabcdeancdea'
+'bcdeabcdeabcdeancde';
console.log(str)
方法3:
var str=(function () { /*
abcdeabcdeabcdeancde
abcdeabcdeabcdeancde
abcdeabcdeabcdeancdea
bcdeabcdeabcdeancde
*/}).toString().split('\n').slice(1,-1).join('') //注意这里的join('');
console.log(str)
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 huiwen(str){
if(str===str.split('').reverse().join('')){
console.log('是回文字符串')
}else{
console.log('不是回文字符串')
}
}
var str1='abcdcba'
var str2='jfsljfsd'
huiwen(str1)
huiwen(str2)
6、写一个函数,统计字符串里出现出现频率最多的字符
function maxWord(str){
var obj={};
var maxNum=0;
var maxNames='';
var maxName='';
for (var i=0; i<str.length; i++){
if (obj[str[i]]){
++obj[str[i]]
}else{
obj[str[i]]=1
}
}
for (var key in obj){
if (obj[key]>maxNum){
maxNum = obj[key]
maxName = key
}
}
for (var i in obj){
if (obj[i]===obj[maxName]){
maxNames+='"'+i+'"'
}
}
return '频率最多的字符:'+maxNames+'\n'+'出现次数:'+maxNum;
}
var str1='fffaaaccc'
console.log(maxWord(str1))
7、写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
代码:
function camelize(str){
var arr;
var upp;
arr=str.split('');
for (var i=0; i<arr.length; i++){
if (arr[i]==='-'){
upp=arr[i+1].toUpperCase();
arr.splice(i,2,upp);
}
}
str=arr.join('');
console.log(str)
return str;
}
8、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
ucFirst("hunger") == "Hunger"
代码:
function ucFirst(str){
var arrStr=str.split('');
arrStr[0]=arrStr[0].toUpperCase();
str = arrStr.join('');
console.log(str)
return str;
}
var str='hunger'
ucFirst(str)
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){
return str;
}else{
str=str.slice(0,maxlength)+'...';
return str;
}
}
var str='fjsldjfowejf'
console.log(truncate(str, 5));
console.log(truncate(str, 30));
10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
JSON中的值可以是:字符,数字,布尔,true,false,null,对象,数组
例:
var json1 = {"name": "Byron", "age": "24"}
var json2 = [
{"name": "Byron", "age": "24"},
{"name": "Byron2", "age": "25"}
]
window.JSON:
用于判断浏览器是否兼容JSON的用法,例如IE8版本以上才内置支持JSON.parse方法,对此常见这样的写法:
if(window.JOSN){
jsonObj2 = JSON.parse(json);
}else{
}
可以通过对原生对象的模仿使那些没有原生支持 JSON 对象的浏览器(比如IE6)中使用 JSON 对象。
模仿源码: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON
11、如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?
原生支持
IE以上浏览器都支持了一个对象JSON,JSON对象主要有两个『静态』函数
- parse:把字符串转化为JSON对象
- 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);