liushuangls / memo

用于记录
1 stars 0 forks source link

JavaScript字符串与JSON #14

Closed liushuangls closed 6 years ago

liushuangls commented 7 years ago

1.对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么?

2.使用数组拼接出如下字符串 ,其中styles数组里的个数不定

var prod = {
    name: '女装',
    styles: ['短款', '冬季', '春装']
};

function getTpl(data){
  var arr = []
  arr.push('<dl class="product">')
  arr.push('<dt>'+data.name+'</dt>')
  for (var x in data.styles) {
    arr.push('<dd>'+data.styles[x]+'</dd>')
  }
  arr.push('</dl>')
  return arr.join('')
};
var result = getTpl(prod);  //result为下面的字符串

<dl class="product"><dt>女装</dt><dd>短款</dd<dd>冬季</dd><dd>春装</dd></dl>

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

1.转义法:注:\后不能有空格
var a = '<div>\
        <h1>123</h1>\
        </div>'
2.使用'+'号连接:
var a = '<div>'
        + '<h1>123</h1>'
        + '</div>'
3.使用es6语法``:
var a = `<div>
         <h1>123</h1>
         </div>`

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

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

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

var str = 'jirengu\nruoyu'
console.log(str.length)
// 13 , 因为\n是一个特殊字符

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

function isPalind(str) {
  var result = true
  var len = str.length
  for (var i = 0; i < len; i++) {
    if (str.charAt(i) !== str.charAt(len -1 - i)) {
      result = false
      break
    }
  }
  return result
}

isPalind('abcdcba') //true
isPalind('abcdcbb') //false

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

function maxChar(str) {
  var dict = {}
  var count = 0
  var maxValue
  for (var i = 0; i < str.length; i++) {
    if (dict[str.charAt(i)]) {
      dict[str.charAt(i)]++
    } else {
      dict[str.charAt(i)] = 1
    }
  }

  for (var key in dict) {
    if (dict[key] > count) {
      count = dict[key]
      maxValue = key
    }
  }
  console.log(maxValue + ':' + count)
}

maxChar('asaoisfjpqjfpajfohuboojvpoafpo')
// o:6

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

camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'

function camelize(str) {
  var arr = []
  arr = str.split('-')
  for (var i = 1; i < arr.length; i++) {
    arr[i] = arr[i].charAt(0).toUpperCase() 
            + arr[i].slice(1).toLowerCase()
  }
  return arr.join('')
}

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

ucFirst("hunger") == "Hunger"

function ucFirst(str) {
  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
}

10.写一个函数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.slice(0, maxlength) + '...'
  }
  return str
}

11.什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?