Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combining some array items

I'm kind of new to functional programming and I try to do the following: Let's say I have an array of values: ['a','b-','c'] and I want that every item which ends with a '-' is merged with the following array entry: ['a','b-c'].

Of course I can do this by making a for-loop:

var test = ['a', 'b-', 'c'], result = [];

for (var i=0;i<test.length;i++) {
  var curr = test[i];
  if (curr.endsWith('-')) {
    curr += test[i+1];
    i++;
  }
  result.push(curr);
}

But how can one do this without the for loop?

like image 402
Willem de Wit Avatar asked Jul 18 '26 00:07

Willem de Wit


1 Answers

To be honest, the way you programmed is probably the most efficient way to do this.

However, here's another option:

var test = ['a', 'b-', 'c'],
    result = test.join().replace(/-,/g, '').split(',');

console.log(result);

This joins all elements into a string: 'a,b-,c', removes all occurrences of '-,' > 'a,bc', then splits the string back up into an array with the desired result, as you can see in the output.

This can be fool-proofed a bit, by changing the separator used in the join / split:

var test = ['a', 'b-', 'c'],
    separator = '||',
    result = test.join(separator)
        .replace(new RegExp('-' + separator, 'g'), '')
        .split(separator);
like image 65
Cerbrus Avatar answered Jul 19 '26 13:07

Cerbrus



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!