javascript - 在 JavaScript 的括号语句中是否有一个 "while"等价物?

标签 javascript functional-programming shortcut

我经常发现 JavScript 快捷键很有用,例如替换 if/else 语句

if (a !== 0) {
  b = c;
} else {
  b = d;
}

b = a ? c : d;

或者像这样替换 for/next 循环

for (let i = 0; i < array.length; i++) {
  element = array[i];
  /* do something with element... */
}

array.forEach(element => { /* do something with element... */ });

我特别喜欢这些和其他类似的快捷方式可以在括号语句中组合和使用,例如

array.forEach(e => (x += e ? a : b, e * x));

(作品)

但是,我一直无法找到与括号内的“while”语句等效的快捷方式或功能。有这种事吗?

我试图在括号内使用普通的 while 语句,但出现错误

array.forEach(e => (while (e.length > 160) { e.replace(' ', ''); }, e));

(不起作用)

我知道上面可以用更长的形式重写,像这样

array.forEach(e => {
  while (e.length > 160) {
     e.replace(' ', '');
  }
  return e;
});

(作品)

但有时我真的更喜欢相当于 while 的内联速记,而不是长版本。有办法吗?

最佳答案

你可以使用递归:

const cutSpace = str => str.length > 160
  ? cutSpace(str.replace(' ', ''))
  : str

const trimmedStrings = array.map(cutSpace)

关于javascript - 在 JavaScript 的括号语句中是否有一个 "while"等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41942988/

相关文章:

javascript - 用于 secret 入口链接的按键组合

javascript - React 中生成的表的键定义

javascript - 左侧赋值无效

data-structures - 如何在函数式编程中实现内存有效的集合的无损操作?

haskell - 如何将这个二进制递归函数转换为尾递归形式?

haskell - 设计一种简单的静态类型化语言的类型系统(在Haskell中)

windows - Windows命令中杀死进程的快捷命令是什么?

javascript - 简单的 if 语句不起作用

Java - 从桌面上的快捷方式读取名称、路径、大小等详细信息

linux - 如何编写 linux bash 别名以一直等待文件直到它出现并在它出现后拖尾