3
\$\begingroup\$

I have the following code that converts a string that looks like:

aaa-bbb|ccc-ddd|eee-fff

to two strings that look like:

aaa|ccc|eeeandbbb|ddd|fff

The code works fine, but I am wondering if I probably missed some string/array functions that can makes the job in fewer operations / or with faster runtime.

var id = "HEL-CAS|MAD-STO|XXX-YYY"
var splittedId = id.split('|');
var from = "",
 to = "";
$(splittedId).each(function(a, b) {
 from = from + b.split("-")[0] + "|";
 to = to + b.split("-")[1] + "|";
});
from = from.substring(0, from.length - 1);
to = to.substring(0, to.length - 1);
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked Feb 10, 2016 at 11:40
\$\endgroup\$
0

2 Answers 2

3
\$\begingroup\$

You can use some ES6 functions and have something like:

var s = 'HEL-CAS|MAD-STO|XXX-YYY';
var s1 = [];
var s2 = []
for (var v of s.split('|').map(str => str.split('-'))) {
 s1.push(v[0])
 s2.push(v[1])
}
s1.join('|')
s2.join('|')
answered Jun 11, 2016 at 6:05
\$\endgroup\$
0
\$\begingroup\$

You can make from and to to array and use array.join(). This might help you if you wish to process certain values in this list later.

var str = "HEL-CAS|MAD-STO|XXX-YYY"
var from = [], to = [];
str.split('|').forEach(function(item){
 var _tmp = item.split("-");
 from.push(_tmp[0]);
 to.push(_tmp[1]);
});
console.log(from.join("|"), to.join("|"));

answered Feb 10, 2016 at 11:47
\$\endgroup\$
2
  • \$\begingroup\$ You probably meant from.join("|") .. but still I would love to have some profiler information between the two versions (mine and yours) \$\endgroup\$ Commented Feb 10, 2016 at 11:52
  • 1
    \$\begingroup\$ @najibla Inspired by your question, I actually widened its requirement so rather than an answer I posted it as a new question. You can look at it [here] (codereview.stackexchange.com/questions/119722/…). \$\endgroup\$ Commented Feb 12, 2016 at 16:46

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.