有没有办法在字符串上有条件地引用诸如.replace()之类的函数?

时间:2018-07-10 23:05:33

标签: javascript node.js

仅保留var语句,例如:

public static <K,V> void appendMapBtoMapA(HashMap<K,List<V>> a, HashMap<K,List<V>> b) {
    for (Map.Entry<K, List<V>> bEntry : b.entrySet()) {
        a.computeIfAbsent(
            bEntry.getKey(), 
            k -> new LinkedList<>()
        ).addAll(bEntry.getValue());
    }
}

如果foo为1,则仅执行替换操作。

var foo = 0, bar = "abc".replace("a", "x"); // want bar to equal "abc"
var foo = 1, bar = "abc".replace("a", "x"); // want bar to equal "xbc"

有一个noOp类型的函数可以代替“ replace”用于“某些noOp函数”吗?我不想修改任何原型。有没有办法使用现有方法来做到这一点?

“ abc”可以在变量中,例如:

var foo = 0, bar = "abc"[foo ? "replace" : "some noOp function"]("a", "x");

1 个答案:

答案 0 :(得分:3)

对于字符串,可以使用toString/valueOf方法,该方法将返回相同的字符串,并且不带参数,因此您可以传递任何所需内容而不必担心。

function bar(foo) {
  return "abc"[foo ? "replace" : "toString"]("a", "x");
}

console.log(bar(true));
console.log(bar(false));

无论如何,我不建议您这样做。最好不要调用该函数,而且我也不认为它很干净。