ES6之字符串、数值、对象

字符串

字符串查找
includes(str):判断是否包含参数(str)的字符串
startsWith(str):判断是否以参数(str)字符串开头
endsWith(str):判断是否以参数(str)字符串结尾

注意:

  1. 这三个方法都支持两个参数,第一个参数要搜索的字符串(必填),第二个参数搜索起始位置索引(可选)。
  2. 这三个方法都返回true/false,查找字符串的具体位置,还是要用 indexOf 和 lastIndexOf 。
  3. 这三个方法传入了正则表达式而不是字符串,会抛出错误。indexOf 和 lastIndexOf,会将正则表达式转换为字符串并搜索。
let shana = "first,centre,last";
//返回true/false,判断是否找到参数字符串。
shana.includes("first");  // true
//返回true/false,判断参数字符串是否在原字符串的头部。
shana.startsWith("first");  // true
//返回true/false,判断参数字符串是否在原字符串的尾部。
shana.endsWith("last");  // true
shana.startsWith("centre",6);  // true

字符串重复:repeat()
repeat(count):重复参数(count)次数

console.log("i".repeat(3));  //iii
console.log("i".repeat(0));  //""  将原字符串重复0次返回空字符串
//参数是小数,向下取整
console.log("i".repeat(2.3));  //ii
//参数是负数或者Infinity,会报错
console.log("i".repeat(-1));  //RangeError: Invalid count value
console.log("i".repeat(Infinity));  //RangeError: Invalid count value
//参数是在0到-1之间的小数,等同于0,因为参数会向下取整,取整以后等于-0 repeat视为0;
console.log("i".repeat(-0.5));  //""
//参数为NaN的时候等同于0
console.log("i".repeat(NaN));  //""
//参数为字符串的话则先转换为数字,转换失败按照0计算
console.log("i".repeat("3"));  //iii
console.log("i".repeat("i"));  //""

字符串补全:
padStart():返回新的字符串,参数字符串从头部(左侧)补全原字符串。
padEnd():返回新的字符串,用参数字符串从尾部(右侧)补全原字符串。
这两个方法接受两个参数,第一个参数是指定生成的字符串的最小长度,第二个参数是用来补全的字符串。

console.log("i".padStart(5,"o"));  // "ooooi"
console.log("i".padEnd(5,"o"));    // "ioooo"
//没有指定第二个参数,默认用空格填充
console.log("i".padStart(5));      // "    i"
console.log("i".padEnd(5));      // "    i"
//指定的长度小于或者等于原字符串的长度,则返回原字符串:
console.log("iiii".padStart(3,"a"));  //iiii
console.log("iiii".padEnd(3,"a"));  //iiii
//原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串:
console.log("iii".padStart(10,"0123456789"));  //0123456iii
console.log("iii".padEnd(10,"0123456789"));  //iii0123456
//常用于补全位数
console.log("13".padStart(5,"0"));  //00003
console.log("234".padStart(5,"0"));  //00234

模板字符串
模板字符串就是加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。模板字符串中的换行和空格都是会被保留的。

//普通字符串
let string = `Hello'\n'world`;
console.log(string); 
// "Hello'
// 'world"

//多行字符串
console.log(`javascript
    ES6
`);
//javascript
//ES6

//字符串插入变量和表达式。变量名写在 ${} 中,${} 中可以放入 JavaScript 表达式。
let name = "javascript";
let time= 3;
let info = `学习${name}${time+1}天`
console.log(info);
//学习javascript4天

//字符串中调用函数:
function f(){
  return "javascript";
}
let string2= `学习${f()}`;
console.log(string2);  // 学习javascript

标签模板
标签模板可以过滤HTML字符串,防止用户输入恶意内容

//标签模板,是一个函数的调用,其中调用的参数是模板字符串。
alert`javascript`;
// 等同于
alert('javascript');

//当模板字符串中带有变量,会将模板字符串参数处理成多个参数。
function f(stringArr,...values){
 let result = "";
 for(let i=0;i<stringArr.length;i++){
  result += stringArr[i];
  if(values[i]){
   result += values[i];
        }
    }
 return result;
}
let name = 'javascript';
let age = 27;
f`My Name is ${name},I am ${age+1} years old next year.`;
// "My Name is javascript,I am 28 years old next year."
// 等同于
f(['My Name is',',I am ',' years old next year.'],'javascript',28);

数值

//二进制用0b
console.log(0b11 === 3); // true
console.log(0B11 === 3); // true
//八进制用0o
console.log(0o11 === 9); // true
console.log(0O11 === 9); // true

Number.isFinite(i):判断是否为有限大的数
Number.isNaN(i):判断是否为NaN
Number .isInteger(i):判断是否为整数
Number.parseInt(str):将字符串转换为对应的数值。无参数默认为整数
Math.trunc(i):去除小数部分。

对象

拓展运算符(…)用于取出参数对象所有可遍历属性然后拷贝到当前对象。
判断两个数据是否完全相等:Object.is(v1, v2),比较的是字符串是否相等。

将源对象的属性复制到目标对象上:Object.assign(目标对象, 源对象1, 源对象2…),即合并(拼接)。
如果目标对象和源对象有同名属性,或者多个源对象有同名属性,则后面的属性会覆盖前面的属性。
如果该函数只有一个参数,当参数为对象时,直接返回该对象;当参数不是对象时,会先将参数转为对象然后返回。

let target = {a: 1};
let object2 = {b: 2};
let object3 = {c: 3};
Object.assign(target,object2,object3);  
// 第一个参数是目标对象,后面的参数是源对象
target;  // {a: 1, b: 2, c: 3}

ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值。

const age = 12;
const name = "Amy";
const person = {age, name};
person   //{age: 12, name: "Amy"}
//等同于
const person = {age: age, name: name}

//方法名也可以简写
const person = {
  sayHi(){
    console.log("Hi");
  }
}
person.sayHi();  //"Hi"
//等同于
const person = {
  sayHi:function(){
    console.log("Hi");
  }
}
person.sayHi();//"Hi"

属性的简洁表示法和属性名表达式不能同时使用,否则会报错。
ES6允许用表达式作为属性名,但是一定要将表达式放在方括号内。

const obj = {
 ["he"+"llo"](){
   return "Hi";
  }
}
obj.hello();  //"Hi"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值