字符串与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 是什么?

11. 如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?

使用JSON.parse()可以把字符串解析为JSON对象,而JSON.stringify()可以将JSON对象解析为字符串。
eval()也可以把字符串解析为JSON对象,虽然evel()解释代码字符串的能力非常强大,但也十分危险。因此在使用evel时必须极为谨慎,特别是在用它执行用户输入数据的情况下。否则,可能会有恶意用户输入威胁你站点或应用程序安全的代码(即所谓的代码注入)

上一篇下一篇

猜你喜欢

热点阅读