if (Link(this.playerUnits).none(isUnitAlive)) { // game over handling}
var array = []; // filled with stuff, let's say.var alive = Link(array).filter(theDead).toArray();array.length = 0; // yes, this is a thing.array.concat(alive);
Link(array).remove(theDead);
var evens = Link(numbers).where(even);assert(evens.none(odd));if (!evens.contains(2)) alert("That's weird, there's no 2 here...");if (!evens.contains(8)) alert("Did the number 8 get... ate?");evens.each(function(num) { print(num);});
var my_query = Link(array1).where(even);my_query.each(noop);my_query.toArray();my_query.target = array2;my_query.reduce(addUp);
var evenfilter = Link(array1).filter(even);evenfilter.each(noop);// later:evenfilter.retarget(array2).toArray();
var a = Link.create(10, 0); // 1D arrayvar a = Link.create(5, 2, 0); // 2D arrayvar a = Link.create(8, 8, 5 0); // 3D arrayvar a = Link.create(4, 3, function() { return new Item(); });
// array of: [[0, 1, 2],[0, 1, 2]];Link.create(2, 3, function(n) { return n; });
Just out of curiosity, why is this in the Resources forum instead of Libraries?
That's a neat feature. The ability to pass a lambda was a smart move; I could see this being very useful for initializing lookup tables.
BTW, retarget is a completely optional feature.
Any reason why the lambda for Link.create only gets the immediate index as an argument and not a full set of coordinates? Like I said, it sounds very useful for creating lookup tables on the fly, but you need to know all the indices to do that.
Link.create = function() { var args = arguments, stop = args.length - 1, v = args[stop], isFn = (typeof v == "function"); function CreateArray(n, idx) { if (n == stop) return (isFn) ? v(idx) : v; var a = [], l = args[n], n = n + 1; for (var i = 0; i < l; ++i) { a[i] = CreateArray(n, i); } return a; } return CreateArray(0, 0);}