ES11: 把字符串变成 Iterable

ES11 新增了一个重要的功能,它可以将字符串转换为 Iterable 对象。这在处理字符串的场景下非常有用。在本文中,我们将探讨这项新功能的细节和用法,并提供一些示例代码来演示如何使用这个新功能。

什么是 Iterable?

Iterable 是一种对象,它可以被迭代(遍历)。在 JavaScript 中,数组和 Map/Set 等数据结构都是 Iterable。 Iterable 对象有一个 Symbol.iterator 属性,用来指定一个迭代器对象。这个迭代器对象具有 next() 方法,可以返回迭代器中下一个元素。

如何将字符串变成 Iterable?

在 ES11 中,可以使用内置的 String.prototype[Symbol.iterator] 方法将字符串转换为 Iterable。这个方法返回一个迭代器对象,可以用来迭代字符串中的每个字符。

let str = "Hello World";
let iterable = str[Symbol.iterator]();

console.log(iterable.next()); // { value: "H", done: false }
console.log(iterable.next()); // { value: "e", done: false }
console.log(iterable.next()); // { value: "l", done: false }
console.log(iterable.next()); // { value: "l", done: false }
console.log(iterable.next()); // { value: "o", done: false }
console.log(iterable.next()); // { value: " ", done: false }
console.log(iterable.next()); // { value: "W", done: false }
console.log(iterable.next()); // { value: "o", done: false }
console.log(iterable.next()); // { value: "r", done: false }
console.log(iterable.next()); // { value: "l", done: false }
console.log(iterable.next()); // { value: "d", done: false }
console.log(iterable.next()); // { value: undefined, done: true }

应用场景

字符串转换为 Iterable 对象之后,我们就可以使用 for-of 循环或者解构赋值来迭代字符串中的每个字符。这在字符串相关的操作中非常有用,例如:

1. 反转字符串

let str = "Hello World";
let reversed = "";

for (let char of str) {
  reversed = char + reversed;
}

console.log(reversed); // "dlroW olleH"

2. 检查字符串是否包含特定字符

let str = "Hello World";
for (let char of str) {
  if (char === "o") {
    console.log("字符串包含 o");
    break;
  }
}

3. 计算字符串长度

let str = "Hello World";
let count = 0;

for (let char of str) {
  count++;
}

console.log(count); // 11

总结

ES11 把字符串转换为 Iterable 对象是一个非常有用和强大的功能。它给字符串处理带来了更多的方便和灵活性。本文中,我们介绍了这个新功能的基本知识和用法,并提供了几个实际应用的例子。无论是处理单个字符串还是大量的字符串,ES11 的 Iterable 功能都可以大大提高效率和减少代码量。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65ab99e4add4f0e0ff54151a


纠错反馈