Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #30908

Re: Any way to do this in JavaScript?

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups comp.lang.javascript
Subject Re: Any way to do this in JavaScript?
Date 2016-07-19 21:05 +0200
Organization PointedEars Software (PES)
Message-ID <1889594.irdbgypaU6@PointedEars.de> (permalink)
References <nmln2h$kbr$1@dont-email.me>

Show all headers | View raw


$Bill wrote:

> In Perl, I have:
> 
>      my ($title, $chan, $call, $sTime, $dur) = split /~~/, $el;
> 
> I've converted this to JavaScript thusly:
> 
>      var flds = el.split('~~');    // split into array, then to vars
> 
>      var title = flds[0];
>      var chan =  flds[1];
>      var call =  flds[2];
>      var sTime = flds[3];
>      var dur =   flds[4];
> 
> I was hoping for a more straightforward/cleaner syntax - something like:
> 
>      var (title, chan, call, sTime, dur) = el.split('~~'); // do it all in
>      one like Perl
> 
> Any way to do that?

Conforming implementations of ECMAScript 2015 support the destructuring 
assignment, formerly introduced for arrays only with Mozilla JavaScript 1.7:

  var [title, chan, call, sTime, dur] = el.split('~~');

<http://PointedEars.de/scripts/test/es-matrix/?filter=%5D%5Cs%2B%3D%20Array>
<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment> pp.


If one of the implementations that you need to support does not have that 
feature, you can use something like my jsx.array.destructure() [1]:

  var obj = jsx.array.destructure(el.split('~~'),
    ["title", "chan", "call", "sTime", "dur"]);

Afterwards there are enumerable, writable, and configurable properties, 
respectively:

  obj.title
  obj.chan
  obj.call
  obj.sTime
  obj.dur


Note that while in Perl your delimiter is always considered a regular 
expression (see perlfunc(1)), in ECMAScript implementations it can be either 
a string value or a regular expression.  In this case, using a string value 
as you did is the proper, most efficient, approach.

<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split>


Next time, post with your real name.  This is Usenet, not a chat room.

__________
[1] <http://PointedEars.de/wsvn/JSX/trunk/object.js>
-- 
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.

Back to comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Any way to do this in JavaScript? $Bill <news@todbe.com> - 2016-07-19 10:12 -0700
  Re: Any way to do this in JavaScript? Martin Honnen <martin.honnen@gmx.de> - 2016-07-19 20:14 +0200
    Re: Any way to do this in JavaScript? $Bill <news@todbe.com> - 2016-07-19 12:02 -0700
  Re: Any way to do this in JavaScript? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-07-19 21:05 +0200
    Re: Any way to do this in JavaScript? $Bill <news@todbe.com> - 2016-07-19 12:49 -0700
      Splitting strings (was: Any way to do this in JavaScript?) Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-07-20 00:25 +0200
        Re: Splitting strings (was: Any way to do this in JavaScript?) "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-07-20 09:45 +0200
  Re: Any way to do this in JavaScript? "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2016-07-19 23:21 -0700
    Re: Any way to do this in JavaScript? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-07-20 10:56 +0200

csiph-web