You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript字符串中遍历码点的索引及其对应值?

在JavaScript中遍历字符串码点的索引与对应值

JavaScript 提供了 String.prototype[Symbol.iterator] 来遍历字符串的码点,但没有内置方法能同时获取每个码点的起始索引。我们可以自己实现一个函数来满足需求,比如题目中提到的 codepointIndices:

实现方式(生成器版本)

function* codepointIndices(str) {
  let index = 0;
  for (const char of str) {
    yield [index, char];
    index += char.length;
  }
}

测试示例

调用 [...codepointIndices("H🏁ello")] 会得到预期结果:

[[0, "H"], [1, "🏁"], [3, "e"], [4, "l"], [5, "l"], [6, "o"]]

实现逻辑说明

  • 使用生成器函数(function*)可以逐个返回码点的索引与对应值,配合扩展运算符 ... 就能轻松转为数组
  • 初始化 index 为0,用来追踪当前码点在字符串中的起始位置
  • for...of 循环会自动通过字符串的默认迭代器处理码点,像"🏁"这种占用2个UTF-16代码单元的字符会被当作一个整体遍历
  • 每次迭代后,根据当前字符的 length(即该码点对应的UTF-16代码单元数量)更新索引,确保下一次迭代的索引位置正确

非生成器版本(直接返回数组)

如果不需要生成器的惰性遍历特性,也可以直接返回数组:

function codepointIndices(str) {
  const result = [];
  let index = 0;
  for (const char of str) {
    result.push([index, char]);
    index += char.length;
  }
  return result;
}

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:57:05