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'
这段字符串很长,如何多行优雅的显示
- 字符串相加
var str = ' ' +
'abcdeabcdea' +
'bcdeancdeab' +
'cdeabcdeabcd'...
- 反斜线
var str = '\
acdgasfga\
asfgasfgsd\
asfgsdgsdg\'
- 字符串数组join
var str = [
'asfgsdg',
'asfdsgb',
'afsdggs',
].join('')
- 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对象转化为字符串