【问题标题】:Javascript expression to replace one value with another without repeating the valueJavascript表达式用一个值替换另一个值而不重复该值
【发布时间】:2023-02-04 03:45:37
【问题描述】:

在 javascript 中是否有一种用不同值替换值的简写方法?

这是我所知道的最简洁的方法:

getAttr(data,"PARTITIONING_SCHEME") === "[None]" ? "" : getAttr(data,"PARTITIONING_SCHEME") 

但这需要我自己重复一遍,在本例中调用 getAttr 函数两次以获得相同的值。显然,我可以将它分配给一个变量一次,然后执行条件逻辑,但那将是另一行代码,我正在寻找简洁性。

我想我可以做一个字符串替换:

getAttr(data,"PARTITIONING_SCHEME").replace("[None]","")

但这会错误地修改一些恰好嵌入了 [None] 的较长字符串。我确信正则表达式可以做到这一点,但我不想经常求助于正则表达式……只需要一些快速、简洁和容易记住的东西。看起来很简单。

这是不是询问 javascript 三元运算符 ?,这是我在上面展示的,需要在两侧重复操作数,也不需要无效合并 ??|| ,它们只替换无效值。我想用另一个替换一个非空值,否则就不管它了。

假设有一个字符串方法“swap”:

 getAttr(data,"PARTITIONING_SCHEME").swap("[None]","")

如果它与第一个操作数不匹配,那么将保留该值,但如果匹配则将其交换为第二个操作数。

【问题讨论】:

标签: javascript


【解决方案1】:

关于什么:

getAttr(data,"PARTITIONING_SCHEME").replace(/^[None]$/,"")

它只会替换[None],当它是仅有的字符串的内容。

或者创建一个小实用函数:

const noneBlank=s=>s=="[None]":"":s;

// apply it here:
nonBlanc(getAttr(data,"PARTITIONING_SCHEME"))

【讨论】:

  • 是的,正则表达式可以做到这一点,但对于广泛使用来说,这是相当神秘的。我希望有一些更简单、更容易记住的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 2019-02-08
  • 2023-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多