const confirmations = {
quantity: false,
total_price: true,
unit_price: true
}
// Should print -> Total Price & Unit Price
// If three variables are true then should print -> Quantity, Total Price & Unit Price
我知道这可以使用几个 if...else
语句来实现,但这确实很蹩脚。还有其他方法可以实现这一目标吗?
最佳答案
您可以采用另一个对象进行措辞,然后通过用“&”号替换最后两个单词并用逗号替换连接之前的所有单词来创建一个漂亮的字符串。
function getString(confirmations) {
const
nice = a => a.concat(a.splice(-2, 2).join(' & ')).join(', '),
words = { quantity: 'Quantity', total_price: 'Total Price', unit_price: 'Unit Price' };
return nice(Object
.entries(confirmations)
.filter(([, v]) => v)
.map(([w]) => words[w])
);
}
console.log(getString({ quantity: false, total_price: true, unit_price: true }));
console.log(getString({ quantity: true, total_price: true, unit_price: true }));
console.log(getString({ quantity: false, total_price: true, unit_price: false }));
关于javascript - 如何在JS中基于 bool 值自动在单词之间插入逗号或&符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185027/