有条件地在多个值之间包含文本?

Conditionally include text between multiple values?

我有这个,它可以工作,但有些字段并不总是有值(并且不呈现)。有没有办法有条件地包含文本?例如,在 {a}、{b} 和 {c} 之间,但前提是它们都被渲染了?

const yay = `${a ? a + ` | `: ""}${b ? b + ` | ` : ""}${c ? c : ""}`

您可以使用 [a, b, c].filter(v => !!v).join('|')。这会过滤掉所有虚假值(undefined、null、false、0、空字符串等),这也是您当前代码所做的。

您可以将它们全部添加到一个数组中,并根据它们在 javascript 中的 真实性 值评估来过滤它们。稍后,只需将结果作为由 |.

分隔的字符串加入

let a = "789";
let b = "";
let c = true;

const result = [a,b,c].filter(ele => ele);

console.log(result.join('|'))