字符串与JSON
2017-04-19 本文已影响0人
_李祺
1. 使用数组拼接出如下字符串
如下:
var prod = {
name: '女装',
styles: ['短款', '冬季', '春装']
};
function getTplStr(data) {
var arr = [];
arr.push("<dl class=\"product\">\n");
arr.push("\t<dt>"+data.name+"</dt>\n");
for (var i = 0; i < data.styles.length; i++) {
arr.push("\t<dd>"+data.styles[i]+"</dd>\n");
}
arr.push("</dl>");
return arr.join();
}
var result = getTplStr(prod);
console.log(result) //result为下面的字符串
结果:
<dl class="product">
<dt>女装</dt>
<dd>短款</dd>
<dd>冬季</dd>
<dd>春装</dd>
</dl>
2. 写出两种以上声明多行字符串的方法
1.在每一行的尾部使用反斜杠。
var longString = "Long \
long \
long \
string";
longString
"Long long long string"
2.连接运算符(+)可以连接多个单行字符串,用来模拟多行字符串。
var longString = 'Long '
+ 'long '
+ 'long '
+ 'string';
longString
"Long long long string"
3. 补全如下代码,让输出结果为字符串: hello\\饥人谷
var str = "hello\\\\饥人谷"
console.log(str)
结果:
hello\\饥人谷
4. 以下代码输出什么?为什么
var str = 'jirengu\nruoyu'
console.log(str.length)
结果:
13
换行符\n长度为1占一个空格,jirenguruoyu长度为12,一共为13。
5. 写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
回文:如果将一个字符串翻转过来,能和原字符串完全相等,那么就可以称之为“回文”。
function isPalindrome(str){
return str === str.split("").reverse().join("");
}
console.log(isPalindrome('abcdcba')) //true
console.log(isPalindrome('abcdcbb')) //false
split() 方法用于把一个字符串分割成字符串数组。
join(" ") 方法用于把数组中的所有元素放入一个字符串,并指定" "作为分隔符。
reverse() 方法用于颠倒数组中元素的顺序。
6. 写一个函数,统计字符串里出现出现频率最多的字符
function count(str) {
var obj = {};
for (var i = 0; i < str.length; i++) {
var index = str[i];
if(obj[index]) { //判断obj中是否有当前str的值
obj[index]++; //有的话让数组中已有的当前值的index值++
}else {
obj[index] = 1; //没有的话就将当前值添加到index中去
}
}
console.log(obj);
var num = 0,number=" ";
for(var key in obj) {
if(obj[key] > num) {
num = obj[key];
number = key;
}
}
console.log("出现最多的值是"+ number+"出现次数为"+ num);
}
count('vbifeseinbewewrteee');
Object {v: 1, b: 2, i: 2, f: 1, e: 7}
出现最多的值是e出现次数为7
7. 写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如
如下:
function camelize(str){
var newArr = str.split("-");
var newStr = newArr[0];
for (var i = 1; i < newArr.length; i++) {
newStr = newStr + newArr[i].charAt(0).toUpperCase()
+ newArr[i].slice(1,newArr[i].length);
}
console.log(newStr);
}
camelize("background-color") // 'backgroundColor'
camelize("list-style-image") // 'listStyleImage'
slice() 方法可从已有的数组中返回选定的元素。
第一个参数,规定从何处开始选取。第二个参数(可选),规定从何处结束选取,不写则选择至末尾。
该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法splice()。
8. 写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
如下:
function ucFirst(str){
var newStr = str.charAt(0).toUpperCase() + str.slice(1,str.length);
console.log(newStr);
}
ucFirst("hunger") // "Hunger"
9. 写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如
如下:
function truncate(str,maxlength) {
if (str.length > maxlength) {
var newstr = str.substr(0,maxlength) + "...";
console.log(newstr)
}else {
console.log(str)
}
}
truncate("hello, this is hunger valley,", 10) // "hello, thi..."
truncate("hello world", 20) // "hello world"
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
第一个参数,要抽取的子串的起始下标。第二个参数,抽取子串中的字符数。
10. 什么是 json?什么是 json 语言?JSON 语言如何表示对象?window.JSON 是什么?
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。
- JSON 语言是 JavaScript 对象表示语言的子集。
1.数据在名称/值对中
2.数据由逗号分隔
3.花括号保存对象:对象是一个无序的“名称/值对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值对”之间使用“,”(逗号)分隔。
var json1 = {"name": "Byron", "age": "24"}
4.方括号保存数组
JSON 数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开: - window.JSON是浏览器内置对象,其中JSON.parse()表示把字符串解析为JSON对象,而JSON.stringify()表示将JSON对象解析为字符串。
11. 如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?
使用JSON.parse()可以把字符串解析为JSON对象,而JSON.stringify()可以将JSON对象解析为字符串。
eval()也可以把字符串解析为JSON对象,虽然evel()解释代码字符串的能力非常强大,但也十分危险。因此在使用evel时必须极为谨慎,特别是在用它执行用户输入数据的情况下。否则,可能会有恶意用户输入威胁你站点或应用程序安全的代码(即所谓的代码注入)