Reputation: 101
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?
Upvotes: 0
Views: 42
Reputation: 178350
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)
Upvotes: 3