String、JSON

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

var prod = {
    name: '女装',
    styles: ['短款', '冬季', '春装']
};
function getTpl(data){
//todo...
};

var result = getTplStr(prod);  //result为下面的字符串
女装
短款冬季
春装
解:
//  转义字符
//  \'  单引号
//  \"  双引号
//  \&  和号
//  \\  反斜杠
//  \n  换行符
//  \r  回车符
//  \t  制表符
//  \b  退格符
//  \f  换页符

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

var arr = []

function getStr(data) {
  arr.push('
') arr.push(data.name + '
') for (var i in data.styles) { arr.push("
" + data.styles[i] + "
") } arr.push("
") return arr.join('') } var result = getStr(prod) console.log(result) //输出结果: //
女装
短款冬季 //
春装

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

例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
这段字符串很长,如何多行优雅的显示

  1. 字符串相加
var str = ' ' + 
'abcdeabcdea' +
'bcdeancdeab' +
'cdeabcdeabcd'...
  1. 反斜线
var str = '\
acdgasfga\
asfgasfgsd\
asfgsdgsdg\'
  1. 字符串数组join
var str = [
  'asfgsdg', 
  'asfdsgb',
  'afsdggs',
].join('')
  1. ES6
var str = `asdagadg
              asfgadg
              asfadg`

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

var str = //补全代码 console.log(str)

解:
var str = "hello\\\\饥人谷"    
console.log(str)

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

var str = 'jirengu\nruoyu' console.log(str.length)
输出13,\n中空格并没有算在长度里面,并且\n占了一个占位符

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

function palindrome(str) {
  // Good luck!
  var newStr = str.replace(/\W+/g, '') //匹配所有非单词的字符,替换为空字符串
  newStr = newStr.replace(/\_+/g, '') //匹配所有下划线,替换为空字符串 
  newStr = newStr.toLowerCase()
  //转化字符串为小写
  var arr1 = newStr.split('')
  var arr2 = arr1.reverse()

  var newStr2 = arr2.join('')
  //重构倒序的字符串

  if (newStr == newStr2) { //比较1
    return true
  } else {
    return false
  }
}


// function palindrome(str) {
//   return str.replace(/[\W_]/g, '').toLowerCase() === str.replace(/[\W_]/g, '').toLowerCase().split('').reverse().join('')
// }

console.log(palindrome('abcdcba'))//true
console.log(palindrome("今天好开心开好天今"))//true
console.log(palindrome('3653745856'))//false

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

// 1.字符串转为数组进行排序,以便正则选出相同的挨在一起的字符
// 2.通过正则replace()方法的两个参数,来匹配出现最多的字符和数量
var str = "sssfgtklvlksdcndfssddfsssfssss"
var num = 0
var value = null

function max() {
  var new_str = str.split("").sort().join("")
  var re = /(\w)\1+/g; //没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来,\1表示跟前面第一个子项是相同的
  new_str.replace(re, function ($0, $1) { //$0代表取出来重复的一个个整体,如[s,s...],[f,f..],[d,d....] $1代表这个整体里的字符
    if (num < $0.length) {
      num = $0.length
      value = $1
    }
  })
  console.log(value + ":" + num)
}
max(str)

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

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

function cssStyle2DomStyle(sName){
    var chars = sName.split('-')
    var arr = []
    for(var i=0;i

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

ucFirst("hunger") == "Hunger"

const fn = (str) => {
  return str.charAt(0).toUpperCase(str.charAt(0)) + str.substring(1)
}
let str = "hello jiRenGu"
console.log(fn(str))//Hello jiRenGu

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, maxlen) {
  if(str.length > maxlen) {
    return str.substr(0, maxlen) + '...'
  }else {
    return str
  }
}

10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?

  • json是轻量级的数据交换格式,它基于javascript的一个子集。Json完全采用独立于语言的文本格式,但是也使用了C语言家族的习惯。这些特性使json成为理想的交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。
    json语言是 JavaScript 对象表示语法的子集,json中只能包含一个值。值就是json表示的对象,同时应该符合以下规律:
    数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组
  • JSON 数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开
  • JSON是一种相对来说比较新并且正在日益流行的数据交换格式。作为JavsScript语法的一个子集,它将数据表示为对象字面量。典型的JSON API包含两个函数,parse()和stringify()(分别用于将字符串序列化成DOM对象和将DOM对象转换成字符串)。

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

  • parse:把字符串转化为JSON对象
  • stringify:把JSON对象转化为字符串

你可能感兴趣的:(String、JSON)