javascript - toUpperCase() 映射时出现问题

标签 javascript

我正在尝试编写一个接受字符串的函数,该字符串将以数组内的“waved”版本返回:

wave("stack") => ["Stack","sTack", "stAck", "staCk", "stack"]

我写了这段代码,但是当我在字符串中有一个双字母时出现了问题:

function wave(word){
  let arr = []
  word.split("").map(c=> arr.push(word.replace(c, c.toUpperCase())))
  return arr
}

console.log(wave("hello"))

wave("hello") 给我 ["Hello", "hEllo", "heLlo", "heLlo", "hellO"]

注意索引 2 和索引 3 是相同的,索引 3 应该是“helLo”,而不是“heLlo”。 这是为什么?我该如何解决这个问题?

最佳答案

问题是由于 replace 的调用方式造成的。它总是替换 l 的第一个实例。下面的代码应该可以工作。

function wave(word){
  let arr = []
  word.split("").map((c, i) => {
  let parta = word.substring(0, i);
  let partb = word.substring(i + 1);
  arr.push(parta + c.toUpperCase() + partb);
  });
  return arr
}

console.log(wave("stack"));
console.log(wave("hello"));

关于javascript - toUpperCase() 映射时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57858519/

相关文章:

javascript - 类似于 JavaScript 对象的合并/连接方法.. 不扩展

javascript - NodeJS,分配名称/获取 Jade 复选框的值

javascript - 在 Vue.js 中向用户显示 Apollo 变异错误?

javascript - getJSON 对象未出现在 console.log 中

javascript - 如何将 HTML 页面调用到保留所有功能的 div 部分中的 jQuery 选项卡菜单?

javascript - 基于原型(prototype)继承在实际项目中的应用

javascript - 如何在 webpack 中配置 font-awesome-webpack 的字体文件输出目录?

javascript - 用 RegEx 和 jQuery 替换文本

javascript - CraftyJS如何计算2个 Sprite 之间的矢量?

javascript - Google Places API - 地址和电话号码?