Array statics

by rwaldron

HTML

<div class="some classes" data-info="12"></div>
<div data-info="10"></div>

JavaScript

// http://twitter.com/#!/littlecalculist/status/89848378682392576
// http://twitter.com/#!/littlecalculist/status/89855977838485504



// Unary Array.from()
Array.from = function( arg ) {

  var O = Object( arg );
  var len = O.length >>> 0;
  var A = new Array();
  var k = 0;

  while( k < len ) {

    var kValue;

    if ( k in O ) {
      kValue = O[ k ];

      A[ k ] = kValue;
    }

    k++;
  }

  return A;
};

var divs = document.querySelectorAll("div");

console.log(
    Array.from( divs )
);

// see console

Array.from( divs ).forEach(function( node ) {
    console.log( node );    
});

var filtered = Array.from( divs ).filter(function( node ) {
    return !!node.classList.length;
});

console.log( "filtered", filtered ); 
// filtered [<div class="some classes" data-info="12"></div>]


var reduced = Array.from( divs ).reduce(function( prev, current ) {
    return ( +prev.dataset.info ) + ( +current.dataset.info );
});

console.log( "reduced", reduced ); 
// reduced 22


console.log(
    Array.from( divs[0].classList )
);


var a = Array;

console.log(

    // Now shorter then [].foo.call :)
    a.from( divs )
);






// Variable Arity Array.of()
Array.of = function() { 
  return [].slice.call( arguments ); 
};

console.log(
    Array.of( "things", "that", "aren't", "currently", "an", "array" )
);
// ["things", "that", "aren't", "currently", "an", "array"]

console.log(
    Array.of.apply( null, [ "foo", "bar", "baz" ] )
);
// [ "foo", "bar", "baz" ]

console.log(
    Array.of( 10 )
);