javascript - 如何在JS中基于 bool 值自动在单词之间插入逗号或&符号?

标签 javascript ecmascript-6

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/

相关文章:

javascript - 谷歌地理编码器+谷歌地图添加标记

javascript - 如何对javascript数组进行排序

javascript - WebView SpeedTest 结果始终低于 CustomTab 或 Chrome

javascript - ES6构造函数继承

javascript - 如何处理 Javascript 空对象?

javascript - 如何在ReactJS中检查事件目标的类名?

javascript - 如何使用javascript更改HTML文档中类名的值

javascript - "click(e=>{"和 "click(function(e){"之间的区别

javascript - JavaScript 中反射的概念是什么?

javascript - 为什么静态方法不能在实例方法或构造函数内部使用