进阶任务5

1、使用数组拼接出如下字符串

var prod = {
    name: '女装',
    styles: ['短款', '冬季', '春装']
};
function getTpl(data){
//todo...
};
var result = getTplStr(prod); //result为下面的字符串


女装
短款
冬季
春装
function getTplStr(object){
    var strArray = [];
    strArray.push("
"); strArray.push("
"+ object.name+"
"); for(var item in object.styles) { strArray.push("
"+object.styles[item]+"
"); } strArray.push("
"); return strArray.join(""); }

2、写出两种以上声明多行字符串的方法

方法1 利用行尾转义'/'
var str = 'Long \
may \
she \
reign'
str // 输出 Long may she reign
方法2 利用加号+
var str = 'Long ' +
'may ' +
'she ' +
'reign';
str // 输出 Long may she reign
方法3 利用多行注释生成多行字符串
(function () { /*
Long 
may 
she 
reign
*/}).toString().split('\n').slice(1,-1).join('\n')
// "Long may she reign"

3、补全如下代码,让输出结果为字符串: hello\饥人谷

var str = "hello\\\\饥人谷"//补全代码
console.log(str)

4、以下代码输出什么?为什么

var str = 'jirengu\nruoyu'
console.log(str.length) //13

输出是13,因为字符串 str 中有一个转义字符\n,其虽然有两个字符但是被 JS 解析器认为只是一个字符,有换行的作用,所以输出字符串长度为13


5、写一个函数,判断一个字符串是回文字符串,如 abcdcba 是回文字符串, abcdcbb 不是

function isReverse(str) {
    var str0 = str.split('').join('');
    var str1 = str.split('').reverse().join('');
    return str1 === str0;
}

6、写一个函数,统计字符串里出现出现频率最多的字符

function mostAppear(str){
    var dict = {};
    for(var i=0; i count){

            maxValue = key;
            count = dict[key];
        }
    }//得到出现频率最高的字符的出现数字


    var num = 0;
    var arr = [];
    for(item in dict){
        if(dict[item] === count){
            num++;
            arr.push(item);
        }
    }//将出现频率最高的所有字符放入数组 arr 中

  
    return arr;
}

7、写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如

camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
function camelize(str) {
    var arr0 = str.toLowerCase().split("-");
    //将字符串按照-拆分成字符串数组,并使得全部字母小写
    
    for(var i = 1;i < arr0.length;i++){ 
        var char = arr0[i].charAt(0); 
        //使用 replace()方法将数组中的每个首字母大写化 
        arr0[i]=arr0[i].replace(char,char.toUpperCase()); 
    } 
    return arr0.join(""); 
}

8、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)

ucFirst("hunger") == "Hunger"
function ucFirst(str) {
    return str0 = str.replace(str.charAt(0), str.charAt(0).toUpperCase());
}

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 substr = str.substring(0, maxLength) + '...';
    }

    return str;
}

10、什么是 json?什么是 json 语言?JSON 语言如何表示对象?window.JSON 是什么?

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 JavaScript 的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。

JSON 语言

JSON 语法是 JavaScript 对象表示语法的子集。数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组 。

JSON 数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开。

JSON 对象表示

JSON 语言用花括号表示对象。

var o = new Object //new 了一个对象,也可用大括号的方式来表示一个对象
var obj2 = {
  name:'ruoyu', 
  age: 30, 
  sayName: function(argument){}
} //这种写法被称为对象的字面量表示方式

var str = '{"name": "Byron", "age": "24"}' //JSON 格式字符串
var obj = JSON.parse(str) //将字符串转化为对象后即可操作
window.JSON

用于判断浏览器是否兼容JSON的用法,例如IE8版本以上才内置支持JSON.parse方法,对此常见这样的写法:

if(window.JOSN){
   jsonObj2 = JSON.parse(json);
}else{
}

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);
//把JSON对象转化为字符串

console.log(json_str);
console.log(JSON.parse(json_str));
//把字符串转化为JSON对象 

eval(不建议用)

邪恶的eval出现了,以前很多人图省事用eval把字符串转为json

var json_str = '{"name": "Byron", "age": 24}';
var json = eval( '(' + json_str + ')' );
//一个东西加了括号后会被认为是表达式,可以直接调用console.log(json);

你可能感兴趣的:(进阶任务5)