What happened to this?  I need it!

Github link ain't workin'

Ryan Florence

On Aug 15, 2009, at 2:11 PM, David Nolen wrote:

Set v0.2 released today. Added Set.filter, Set.map, Set.each. Set.filter and Set.map return new Set instances.

David

On Tue, Aug 11, 2009 at 5:52 PM, David Nolen <dnolen.li...@gmail.com> wrote:
http://github.com/swannodette/Set/tree/master

Support for intersection, union, difference on arbitrary Arrays of JavaScript Objects which are JSON compliant.

You can do things like:

var set1 = new Set([1, 2, 9, [3, 4]]);
var set2 = new Set([1, [3, 4], 5, 9]);

// set1.aintersection(set2) -> [1, [3, 4], 9]

var set3 = new Set([{first:"Bob", last:"Smith"}, {first:"Mary", last:"Smith"}]); var set4 = new Set([{first:"Tim", last:"Smith"}, {first:"Mary", last:"Smith"}]);

// set3.adifference(set4) -> [{first:"Bob", last:"Smith"}, {first:"Tim", last:"Smith"}]

It includes a function called $hash that can test equality of any two JavaScript Objects which are JSON compliant. This works on Objects with the following bit of magic: it converts Objects into arrays of arrays of key value pairs. It sorts this array by the original hash keys and then JSON.encodes them. Instead of:

{first:"Bob", last:"Smith"} != {first:"Bob", last:"Smith"}

You can do

$hash({first:"Bob", last:"Smith"}) == $hash({first:"Bob", last:"Smith"})

For large collections which are checked frequently whether they include a subset of some Objects, it far more efficient than Array.contains, and you don't have to write additional equality logic since Array.contains cannot compare two JavaScript Objects with identical key-value pairs.

Cheers.


Reply via email to