I am using my own tags. They start with [
and end with ]
.
I would like to sort the tags. So instead of
[TITLE|prefix=test][DYNAMIC|limit=777|random=1|reverse=0][STORENAME|prefix=SHOP]
it should be
[DYNAMIC|limit=777|random=1|reverse=0][TITLE|prefix=test][STORENAME|prefix=SHOP]
This is what I have tried so far:
const tag = 'DYNAMIC' const str = '[TITLE|prefix=test][DYNAMIC|limit=777|random=1|reverse=0][STORENAME|prefix=SHOP]'; const regex = new RegExp(`\[${tag}[^\[]+`, 'g'); console.log(str.replace(regex, ''));
So the tag [DYNAMIC]
has been removed, which is good but it should be also placed at the beginning of the string. How can I do this?
Advertisement
Answer
Trivial if you want alphabetical sort
let str = `[TITLE|prefix=test][DYNAMIC|limit=777|random=1|reverse=0][STORENAME|prefix=SHOP]` str = str.split("[").sort().join("[") console.log(str)
If you want a fixed order
const sortArr = ["DYNAMIC","TITLE","STORENAME"]; let str = `[TITLE|prefix=test][DYNAMIC|limit=777|random=1|reverse=0][STORENAME|prefix=SHOP]` str = str.split("[") .sort((a, b) => sortArr.indexOf(a.split("|")[0]) - sortArr.indexOf(b.split("|")[0])) .join("[") console.log(str)