美文网首页JavaScript
ES6系列 (二)新的字符串方法

ES6系列 (二)新的字符串方法

作者: Eastboat | 来源:发表于2019-10-11 23:46 被阅读0次

方法

  • String.prototype.startsWith()
  • String.prototype.endsWith()
  • String.prototype.includes()
  • String.prototype.repeat()

思考题

如何修改函数使得返回的时间永远是两个字符长度表示 03:03

//获取当前的小时数和分钟数
function getTime() {
  const date = new Date();
  return date.getHours() + ":" + date.getMinutes();
}
console.log(getTime()); // 上午3时03分会返回 字符串3:3

搜索字符串

所有这些方法都是区分大小的,执行搜索前要将字符串小写化

所有这些方法还可以指定第二个参数指定字符串中的起始搜索位置

startsWith()

下面我们来看两个案例

/*
1.来自不同厂家的产品数据,价格字段有的有美元符,没有的需要我们自己加上,
所以需要检查是否已存在$的字段
*/
const PRODUCT_ARR = [
  {
    id: 0001,
    name: "加多宝",
    price: "$1.00"
  },
  {
    id: 0002,
    name: "农夫山泉",
    price: "0.5"
  },
  {
    id: 0003,
    name: "脉动",
    price: "$0.80"
  },
  {
    id: 0004,
    name: "味全每日C",
    price: "1.3"
  }
];

for (let i of PRODUCT_ARR) {
  if (i.price[0] === "$") {
    //判断第一个字符有美元符
    console.log(i);
  } else {
    //没有的我们手动加上
  }
}

/*
    2。根据用户的当前电话判断所在区
 */
let userTel = "021-888-8880";
const AREA_CODE = "021";
if (userTel.substr(0, 3) === AREA_CODE) {
  console.log(`当前用户的号码是在此区域`);
}

现在有了 ES6 的startsWith(),我们可以改写如下:我们一眼就能看出他在做什么。

if (i.price.starstWith("$")) {
  //....
}

if (userTel.starstWith(AREA_CODE)) {
  //....
}

endsWith()、includes()

let name = "east-boat";
console.log(name.startsWith("east")); //true
console.log(name.endsWith("boat")); //true
console.log(name.includes("t-b")); //true
console.log(name.includes("-bo")); //true

填充字符串

要求某个函数接受用十进制(基数为 10)表示的 IP 地址,将其转化为二进制(基数为 2)表示

function binaryIP(decimalIPStr) {
  return decimalIPStr
    .split(".")
    .map(function(octet) {
      return Number(octet).toString(2);
    })
    .join(".");
}
console.log(binaryIP("192.168.2.1")); //11000000.10101000.10.1

但是当 ip 地址小于 128 的数时,二进制数小于 8 位数字,此时上面的函数是无法执行的

解决办法:需要用 0 填充每一个字节,知道每一个都是 8 位

String.prototype.repeat

'0'.repeat(8) // 调用8次 '00000000'
'0'.repeat(4.9) // 如果不是整数,向下取整而不是四舍五入 '0000'

// 添加es6特性解决
function binaryIP(decimalIPStr) {
  return decimalIPStr
    .split(".")
    .map(function(octet) {
      let bin = Number(octet).toString(2);
      return "0".repeat(8 - bin.length) + bin;
    })
    .join(".");
}
console.log(binaryIP("192.168.2.1")); //11000000.10101000.00000010.00000001

相关文章

  • ES6系列 (二)新的字符串方法

    方法 String.prototype.startsWith() String.prototype.endsWit...

  • JS判断对象是否为空

    方法一: 将 Object 对象转换为字符串,然后判断字符串 方法二: 方法三: ES6 新增的方法 Object...

  • React设置多个classNames

    方法一:ES6模版字符串 方法二:join("") 方法三:classnames(需要下载classnames)

  • JS与ES6字符串相关方法的区别

    JS与ES6字符串相关方法的区别 js字符串相关方法 toLowerCase(): 把字符串转为小写,返回新的字符...

  • 2018-5-31 JavaScript面试题

    前端面试题,保持更新...... 一、数组去重 1.1 常规方法 1.2 ES6新特性 二、去除字符串中的空格 2...

  • 字符串

    1. 字符串方法。 2. ES6新增加的字符串方法。

  • es6的数值,函数,字符串扩展

    一、es6的数值扩展 二、es6的函数扩展 代码效果:对象解构在函数中的应用 三、es6字符串扩展 常用方法 代码...

  • 数组去重有几种方式?

    方法一:遍历比较 方法二:ES6:Set set ES6 提供新的数据结构 Set。它类似于数组,但是成员的值都是...

  • 日期格式转换

    es6字符串方法padStart()方法,padEnd()方法字符串补全长度的功能。如果某个字符串不够指定长度,会...

  • ES6的字符串

    ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别方法。1.includes(...

网友评论

    本文标题:ES6系列 (二)新的字符串方法

    本文链接:https://www.haomeiwen.com/subject/wkdfmctx.html