I define an absorbing String simply as follows: When concatenated with any other String, the result is empty String (another absorbing element).
I know that probably such element doesn't exist natively in JavaScript, but I came up with a simple logic that simulate this
"_".repeat(str.length/str.length)+ str+ "_".repeat(str.length/str.length)
Example:
var str = "HP";
var result = "_".repeat(str.length/str.length)+ str+ "_".repeat(str.length/str.length);
[out]: "_HP_"
str = "";
var result = "_".repeat(str.length/str.length)+ str+ "_".repeat(str.length/str.length);
[out]: ""
The purpose is simply to have underscores besides String only when they exist.
This is very helpful when many String are concatenated with one separator, and that we would like to avoid If Else block-like code.
Is there a shorter form?
str.length/str.length? It's either1all the time anyway or results in a "division by zero"."_".repeat(NaN)gives empty String. At least when run on Chrome JS engine V 65.0[str1, str2, str3, ...].filter(str => str).join(SEPARATOR)