饥人谷技术博客

字符串 & JSON

2017-06-15  本文已影响48人  邢烽朔
珍惜......一切...

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

<pre>
var prod = { name: '女装', styles: ['短款', '冬季', '春装'] }; function getTpl(data){ //todo... }; var result = getTpl(prod); //result为下面的字符串 <dl class="product"> <dt>女装</dt> <dd>短款</dd> <dd>冬季</dd> <dd>春装</dd> </dl>
</pre><pre>
//Method-One
var prod = { name: '女装', styles: ['短款', '冬季', '春装'] }; function getTpl(data){ //思路:先把盒子造好,然后再从上面的对象里面拿数据装进去 var dress = []; dress.push("<dl class=\"product\">"); dress.push("<dt>" + data.name + "</dt>"); for(var key in data.styles){ dress.push("<dd>" + data.styles[key] + "</dd>") } dress.push("</dl>"); //此时得到一个数组..需要reflect如何把他转化为下面的形式。 var a = dress.join(""); return a; }; var result = getTpl(prod); //result为下面的字符串
</pre><pre>
//Method-Two
function getTpl(data){ var something = "<dl class = \"product\">" for(var key in data){ if(typeof data[key] === "string") { something += ("<dt>"+data[key]+"</dt>") }else{ for(var i=0, x=data[key].length; i<x; i++){ something += ("<dd>" + data[key][i] + "</dd>"); } } } something += "</dl>"; console.log(something) return something };
</pre><pre>
//Method-Three function getTpl(data) { var dress = "<dl clss=\"product\">"+"\n"; dress += ("<dt>" + data.name + "</dt>"); dress += ("<dd>" + data.styles[0] + "</dd>"); dress += ("<dd>" + data.styles[1] + "</dd>"); dress += ("<dd>" + data.styles[2] + "</dd>"); dress += "</dl>"; return dress;
</pre>


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

<pre>
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
</pre><pre>
//这个紧挨,注意\n
str = "abcdeabcdeabcdeancde\nabcdeabcdeabcdeancde\nabcdeabcdeabcdeancde\nabcdeabcdeabcdeancde"
</pre><pre>
Method-One str = "abcdeabcdeabcdeancde" + "abcdeabcdeabcdeancde" + "abcdeabcdeabcdeancde" + "abcdeabcdeabcdeancde"
</pre><pre>
//这种可以在前加空格 str = "abcdeabcdeabcdeancde\n\ abcdeabcdeabcdeancde\n\ abcdeabcdeabcdeancde\n\ abcdeabcdeabcdeancde"
</pre><pre>
(function() {/* abcdeabcdeabcdeancde abcdeabcdeabcdeancde abcdeabcdeabcdeancde abcdeabcdeabcdeancde */}).toString().split('\n').slice(1,-1).join();
</pre>


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

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


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

<pre>
var str = 'jirengu\nruoyu' console.log(str.length)
</pre><pre>
13个,因转义字符虽然使用了\n换行但是空格并没有算在长度里面,\n只占据了一个占位符.
</pre>


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

<pre>
var a = "abcdcba"; var c = "abcdcbb" function judge(arg) { return arg == arg.split("").reverse().join(""); } judge(a);//s.. judge(c);//d..
</pre>


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

<pre>
var dostring = "hahahaha, hello this is my world." function numeration(arg) { var i, listf={}; for(i = 0; i < arg.length; i++) { if(listf[arg[i]]) { ++listf[arg[i]]; }else{ listf[arg[i]] = 1 } } var counts; //声明个计算 var maxValue = 0; //声明个最大值 for(var key in listf){ //遍历 if(listf[key] > maxValue) { //遍历到的属性的值大于counts counts = key; //就属性赋给counts maxValue = listf[key]; //再把值赋给他 } } console.log(counts,maxValue); } numeration(dostring);
</pre><pre>
/** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa';      //创建字符串 var word,                          //单个字符 length;                          //该字符的长度 //定义输出对象 var max = { wordName : '',                      //重复次数最多的字符 wordLength : 0                      //重复的次数 }; //递归方法,传入字符串 (function(words) { if (!words) return; //如果字符串已经变空则返回,结束递归 word = words[0]; //取出字符串中的第一个字符 length = words.length; //将length设为当前字符串长度 words = words.replace(new RegExp(word, 'g'), ''); //返回将字符串剔除当前字符的剩余字符串 length = length - words.length; //重设length为当前字符在字符串中的长度 if (length > max.wordLength) //如果该字符重复次数大于maxLength,则重设maxLength为当前字符重复次数 max = { //重设对象的值 wordName : word, wordLength : length }; arguments.callee(words); //递归调用,传入剩余字符串 })(words); console.log(max.wordName+"\n"+max.wordLength); //递归结束后输出结果
</pre>


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

<pre>
function camelize(arg) { var momentvar = arg.split("-"); var result = ""; for(var i=0; i<momentvar.length; i++){ result += (momentvar[i].charAt(0).toUpperCase() + momentvar[i].slice(1)); } return result; }
</pre>


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

<pre>
ucFirst("hunger") == "Hunger"
</pre><pre>
function capitalize(arg) { return arg.charAt(0).toUpperCase() + arg.slice(1) }
</pre>


.写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如

<pre>
truncate("hello, this is hunger valley,", 10) == "hello, thi..."; truncate("hello world", 20) == "hello world"
</pre>
<pre>
function abbr(str, maxlength) { var a = str.slice(0, maxlength)+"..."; console.log(a); }
</pre>


.JSON问题

<pre>
var str = {name:"jirengu",age:2} JSON.stringify(str) //转为字符串 JSON.parse(JSON.stringify(str)). //转为对象
</pre>


上一篇 下一篇

猜你喜欢

热点阅读