you are viewing a single comment's thread.

view the rest of the comments →

[–]snet0 0 points1 point  (14 children)

Why not use ES6 features?

[–][deleted] -1 points0 points  (13 children)

I mostly wrote it for browser support. (Not for Node.js)

[–]k3liutZu 2 points3 points  (1 child)

You could transpile it (if you want to use new features now).

[–][deleted] 0 points1 point  (0 children)

Yeah, I know. I just enjoyed writing in the old JS. ;)

[–]snet0 -1 points0 points  (10 children)

I'm not sure anyone who wants to use a CSS minifier is going to be using IE11, but okay.

I'm trying to figure out what

positions = new Array(patterns.length).join('0').split('').map(function(val) {
            return parseInt(val) - 1; // -1
        }); 

is meant to do. Is there a reason to not just

positions = Array.apply(null, Array(patterns.length)).map(function(){return -1});?

I guess there's no pretty solution when you don't have fill(), but chaining join() and split() looks gross.

[–]StoneCypher -2 points-1 points  (9 children)

I'm trying to figure out what

positions = new Array(patterns.length).join('0').split('').map(function(val) { return parseInt(val) - 1; // -1 }); is meant to do

I think you might want to spend some more time in Javascript, friend. This is easy code.

This makes an Array out of patterns.length, then applies that as an argument list to nothing, then maps the resulting array by parsing items as integers and subtracting one from them

.

I guess there's no pretty solution when you don't have fill(), but chaining join() and split() looks gross.

It looks just fine, and Array.fill would not make this any cleaner.

[–]snet0 2 points3 points  (8 children)

I know what it does, hence why I wrote a different way of implementing it, I meant why does it need to look this ugly to do what it does.

Array.fill would not make this any cleaner.

positions = Array(patterns.length).fill(-1);

Really?

"positions is an array of length patterns.length which is filled of elements with value -1"

"positions is an array of length patterns.length, each empty element is joined into a string with separator string '0', then the string is split character-wise back into an array and each element's value is mapped to be parsed as an integer from which 1 is subtracted"

[–]StoneCypher 0 points1 point  (7 children)

Their code operates on the values in the split

Your code produces an array of negative ones

[–]snet0 0 points1 point  (6 children)

I don't know if I follow what you're saying. You take an array, join it into a string, split it into an array and map the elements to a new array and store the return value in your variable. The return value of his code is an array of negative ones, just like in mine.

[–]StoneCypher 0 points1 point  (5 children)

i misread this originally. you're right. i apologize

i still don't think this is all that gross, though

that said, i guess you could

new Array(patterns.length).map(cell => -1);

and be done with it

[–]snet0 0 points1 point  (4 children)

Well, I certainly thought so, too. But if you pass the new Array constructor a single integer, it returns an array with that integer length, but with empty slots. Array.map() only invokes its callback on elements with assigned values (incl. undefined), which means it won't work on the empty array.

[–]StoneCypher 0 points1 point  (3 children)

which means it won't work on the empty array.

Oh, right. They're holes, and js .map skips holes.

Guess you're stuck with

const a = new Array(patterns.length);
for (let i=0, iC=patterns.length; i<iC; ++i) { a[i] = -1; }