一、字符串方法
所有用单引号,双引号,反引号包起来的都是字符串
let str = 'zhufangpeixun';
// 每一个字符串都是由0到多个字符组成的
str.length // 字符串长度
str[0] // 获取索引为0的(第一个)字符
str [str.length-1] // 获取最后一个字符 str.length-1 最后一项索引
str[1000]; // undefined 不存在这个索引
// 循环输出字符串中的每一个字符
for (let i = 0; i < str.length; i++) {
let char = str[i];
}
获取索引 charAt / charCodeat
- charAt():根据索引获取指定位置的字符 找不到的时候 chaoAt 不会得到 undefined
- charCodeat():获取指定字符的 ASCII 码值,(Unicode 编码值)
substr / substring / slice 实现字符串截取(在原来字符串中查找我们想要的)
- substr(n, m);
从索引 n 开始截取 m 个字符,m 不写就截取到末尾(后面的方法也是) - substring(n, m);
从索引 n 开始找到索引为 m 处,不含 m - slice(n, m);
和 substring 一样,都是找到索引为 m 处,但是 slice 可以支持负数作为索引,其余两个方法是不可以的
负数索引:我们可以按照 str.length + 负索引的方式找。
indexOf(x, y) / lastIndexOf(x) 验证字符是否存在
- indexOf(x, y) : 获取 x 第一次出现位置的索引,y 是控制查找的起始位置索引
- lastIndexOf(x) : 最后一次出现位置的索引
注意:如果没有这个字符,返回的结果是-1。
toUpperCase / toLowerCase 大小写转换
- toUpperCase() :字母转大写
- toLowerCase() :字母转小写
split([分隔符]) 可以和正则搭配使用
- 把字符串按照指定的分割符拆分成数组,(和数组中 join 对应)
// 需求:把 | 变成 , 分隔符
let str = 'mousic | movie | eat | sport';
let ary = str.split('|') => ["mouve", "movie", "eat", "sport"]
str = ary.join(',');
console.log(str); => "music, movie, eat, sport"
replace(old,new) 实现字符串替换(总是伴随着正则而用)
// 需求:把 @ 变为 - 。
let str = '@杨帆@起航';
str = str.replace('@','-')
// 在不使用正则表达式的情况下,执行一次 replace 只能替换一次字符
match
match(匹配内容或者正则) 匹配;如果匹配到会返回一个数组,匹配不到返回 null
var str14 = 'ABCabcEfg';
var st14 = str14.match('ABC');
console.log(st14);
console.log(Object.prototype.toString.call(st14)); // "[object Array]"
/* 匹配到的结果
* [
* 0: "ABC"
groups: undefined
index: 0
input: "ABCabcEfg"
length: 1
* ]
*
* */
var st15 = str14.match('ABCD');
// console.log(st15);
localCompare
trim / trimleft / trimRight
- 字符串.trim() 去除字符串首尾空格的
控制台输出 String.prototype, 即可解锁更多姿势。
补充:
如何将字符串转换成对象?
// 数字 字符串 布尔值 分别对应 Number String Boolean 三个类,可以通过原型上的方法把基本类型的值变成对象
let a = new String('6666');
valueOf() // 返回实例对应的原始类型的值
toString() // 转换为字符串
let b = str.includes("Hello", 2) // 从第2位索引值开始查找
let c = str.startsWith("Hello") // 返回布尔值 标识参数字符串是否在原字符串头部
let d = str.startsWith("World", 6) // 从第6个索引值开始查找
let e = str.endsWith("World"); // 返回布尔值 标识参数字符串是否在原字符串尾部
let f = str.endsWith("Hello", 5); // 从第5个索引值开始查找
let g = str.repeat(3) // 将字符串重复 3遍
let h = str.padStart(20, "a") // 重复第二个参数来补全 字符串 直到字符串位数为 20 在前面补全
let i = str.padEnd(20, "a") // 重复第二个参数来补全 字符串 直到字符串位数为 20 在后面补全
实现一些常用需求
事件字符串的处理
let time = '2019-7-14 12:6:25';
// 变为自己需要呈现的格式,例如'2019年7月14日 12时6分25秒'
// "2019年7月14日"
// "07/14 12:25"
// 不足十位补零方法
let addZero = val => val.length < 2 ? '0' + val : val;
// 处理方式
let ary = time.split(/(?: | - |:)/g);
time = ary[0] + '年' + addZero(ary[1]) + '月' + addZero(ary[2]) + '日';
// 实现一个方法:queryURLParameter 获取一个 URL 地址问号后面传递的参数信息
// 基于正则封装:
function queryURLParams(url) {
let result = {};
reg1 = /([^?=&#]+)=([^?=&#])/g,
reg2 = /#([^?=&#]+)/g;
url.replace(reg1,(n, x, y) => result[x] = y);
url.replace(reg2,(n, x) => result['HSAH] = x);
return result;
}
let aa = 'http://www.zhufengpeixun.cn/index.html?lx=1&name=zhufeng&teacher=aaa#box';
let paramsObj = queryURLParams(aa);
console.log(parmasObj);
把一个单词倒过来
// 把一个单词倒过来
// 方法1
var str = 'word'; // 'drow'
var s = '';
for (var i = str.length - 1; i >= 0; i--) {
s += str[i];
}
console.log(s);
// 方法2
// var s2 = str.split('').reverse().join('');
console.log(s3);
// 方法3
var ary2 = str.split('');
ary2.reverse();
var s3 = ary2.join('');
console.log(s3);
二、Math方法
常用的属性和方法:Math 是一个对象,通过对象.属性名调用
- Math.abs([number value]);
获取绝对值(绝对值永远是正数或者0),如果传的不是数字类型的值,通过 Number()转换为数字再处理 - Math.ceil / floor([number value]);
把一个数向上取整或 / 向下取整 - Math.round([number value]);
四舍五入 负数 . 5 属于舍 - Math.max / min([val1],[val2], …);
获取一堆数中的最大值 / 最小值 - Math.sqrt / pow( )
sqrt:给一个数开平方
pow:计算一个数的多少次幂
Math.pow(2 , 10); 1024 Math.random()
获取0-1之间的随机小数Math.PI 获取圆周率
var PI = Math.PI; // 3.1415926....<br /> var PIFixed = PI.toFixed(2); // toFixed (保留几位小数)<br /> console.log(PI, PIFixed);
扩展:获取 [n ~ m] 之间的随机整数 包含 n 也包含 m,n < m; Math.round(Math.random()*(m - n) + n);
三、日期方法
let time = new Date();
/*
* 获取当前客户端(本机电脑)本地的时间
* 这个时间用户是可以自己修改的,所以不能作为重要的参考依据
*
* Fri Jul 26 2019 10:02:17 GMT+0800 (中国标准时间)
* 获取的结果不是字符串是对象数据类型的,属于日期对象(或者说是 Date 这个类的实例对象)
*/
typeof time; // "object"
标准日期对象中提供了一些属性和方法,供我们操作日期信息
- getFullYear() 获取年
- getMonth() 获取月 结果是0~11代表第一月到第十二月
- getDate() 获取日
- getDay() 获取星期 结果是0~6代表周日到周六
- getHours() 获取时
- getMinutes() 获取分
- getSeconds() 获取秒
- getMilliseconds() 获取毫秒
- getTime() 获取当前日期距离 1970/1/1 00:00:00 这个日期之间的毫秒差
- toLocaleDateString() 获取年月日(字符串)
- toLocaleString() 获取完整的日期字符串