npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

js-array-extensions

v1.0.8

Published

It is an array extensions that can be used javascript and node.js.

Downloads

166

Readme

Junil Um
http://blog.powerumc.kr

travis build results

Javascript Array Extensions

  • It is an array extensions that can be used javascript and node.js.
  • It is just likes C# extension methods or lambda expression can be used.
  • It is more fantastic with https://github.com/powerumc/js-lambda

Use it

Nuget

PM> Install-Package JS.Array.Extensions

Node.JS

$ npm install js-array-extensions

require('js-array-extensions');

Support methods

  • any
  • first
  • firstOrDefault
  • firstOrNew
  • last
  • lastOrDefault
  • lastOrNew
  • where
  • select
  • foreach
  • orderBy
  • take
  • skip
  • sum
  • average
  • max
  • min
  • range and Array.range
  • union
  • clone
  • distinct
  • innerJoin
  • outerJoin - working
  • groupBy - working

Basics

any( predicate )

[1,2,3,4,5].any();                                  // True
[1,2,3,4,5].any(function(i) { return i > 3; });     // True
[1,2,3,4,5].any(function(i) { return i > 5; });     // False

first( predicate )

[1,2,3].first();    // 1

[3,5,6].firstOrNew(function(i) { return i > 5; });      // 6
[3,5,6].firstOrNew(function(i) { return i > 6; });      // []    is new Array()

[3,6,9].firstOrDefault();                               // 3
[3,6,9].firstOrDefault(function(i) { return i > 3; });  // 6
[3,4,5].firstOrDefault(function(i) { return i > 5; });  // Null

last( predicate )

[3,6,9].last();                                 // 9
[3,6,9].last(function(i) { return i > 100; });  // throw null references

[3,6,9].lastOrDefault();                                // 9
[3,6,9].lastOrDefault(function(i) { return i < 9 });    // 6

[3,6,9].lastOrNew(function(i) { return i < 5 });    // 3
[3,6,9].lastOrNew(function(i) { return i < 2; });   // []    is new Array()

Selector and Condition

select( selector )

var arr = [ { "key": "powerumc",    "value": "http://blog.powerumc.kr" },
            { "key": "devth",       "value": "http://devwith.com" },
            { "key": "domain",      "value": "http://powerumc.kr" }];

var selected = arr.select(function(o) {
    return { name: o.key, website: o.value };
});

// results var selected
select name=powerumc,   website=http://blog.powerumc.kr
select name=devth,      website=http://devwith.com
select name=domain,     website=http://powerumc.kr

where( selector )

var arr = [ { "key": "powerumc",    "value": "http://blog.powerumc.kr" },
            { "key": "devth",       "value": "http://devwith.com" },
            { "key": "domain",      "value": "http://powerumc.kr" }];

var selected = arr.where(function(o) {
    return o.value.lastIndexOf(".kr") > 0
});

// results var selected
where lastIndexOf('.kr')=http://blog.powerumc.kr
where lastIndexOf('.kr')=http://powerumc.kr

take( number )

var arr = [1,2,3,4,5,6,7,8,9,10];
var take =  arr.take(5).toString();

// results var take
take = 1,2,3,4,5

skip( number )

var arr = [1,2,3,4,5,6,7,8,9,10];
var skip = arr.skip(5).toString();

// results var skip
skip = 6,7,8,9,10

take and skip

var arr         = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
var take        = 5;
var count       = 5;
var page        = 2;
var pagingList  = arr.skip( page * count ).take(take);

// results
take and skip 11,12,13,14,15

Array.distinct( first, second, ... )

		var first 	= [1, 2, 3, 4, 5];
		var second 	= [1, 2, 3, 4, 5, 6, 7, 8, 9];
		var third 	= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];

		var result  = Array.distinct(first, second, third);

		console.info(result);

		// result
		// 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

Array.distinct( first, second, ... )

var first 	= [1, 2, 3, 4, 5];
var second 	= [1, 2, 3, 4, 5, 6, 7, 8, 9];
var third 	= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];

var result  = Array.distinct(first, second, third);

console.info(result);

// result
// 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

Loop

foreach ( i, object, args )

var arr = [ { "key": "powerumc",    "value": "http://blog.powerumc.kr" },
            { "key": "devth",       "value": "http://devwith.com" },
            { "key": "domain",      "value": "http://powerumc.kr" }];

arr.foreach(function(o) {
    console.info("foreach o=" + o.key);
});

// results
foreach o=powerumc
foreach o=devth
foreach o=domain


arr.foreach(function(i, o) {
   console.info("foreach i=" + i + " key=" + o.key);
});

// results
foreach i=0 key=powerumc
foreach i=1 key=devth
foreach i=2 key=domain


arr.foreach(function(i, o, arg) {
   console.info("foreach i=" + i + " key=" + o.key + "  arg=" + arg);
}, "this is arguments");

// results
foreach i=0 key=powerumc,   arg=this is arguments
foreach i=1 key=devth,      arg=this is arguments
foreach i=2 key=domain,     arg=this is arguments

foreach ( i, object, args ) with foreach.continue

var arr = [ { "key": "powerumc",    "value": "http://blog.powerumc.kr" },
            { "key": "devth",       "value": "http://devwith.com" },
            { "key": "domain",      "value": "http://powerumc.kr" }];

arr.foreach(function(i, o) {
    if( i > 1) {
        return foreach.continue;
    }

    console.info("foreach continue i = " + i + ",   key = " + o.key);
});

// results
foreach continue i = 0,   key = powerumc
foreach continue i = 1,   key = devth

foreach ( i, object, args ) with foreach.break

var arr = [ { "key": "powerumc",    "value": "http://blog.powerumc.kr" },
            { "key": "devth",       "value": "http://devwith.com" },
            { "key": "domain",      "value": "http://powerumc.kr" }];

arr.foreach(function(i, o) {
    if( i == 1 ) {
        return foreach.break;
    }

    console.info("foreach break i = " + i + "   key = " + o.key);
});

// results
foreach break i = 0   key = powerumc

Sort

orderBy( comparer )

var arr = [ 23, 8, 43 ,81, 4, 32, 64 ];
arr = arr.orderBy();

// results
orderBy (default) 4
orderBy (default) 8
orderBy (default) 23
orderBy (default) 32
orderBy (default) 43
orderBy (default) 64
orderBy (default) 81

orderBy( comparer ) with comparer.ascending or comparer.asc

var arr = [ 23, 8, 43 ,81, 4, 32, 64 ];
arr = arr.orderBy(comparer.ascending);

// results
orderBy comparer.ascending 4
orderBy comparer.ascending 8
orderBy comparer.ascending 23
orderBy comparer.ascending 32
orderBy comparer.ascending 43
orderBy comparer.ascending 64
orderBy comparer.ascending 81

orderBy( comparer ) with comparer.descending or cmoparer.desc

var arr = [ 23, 8, 43 ,81, 4, 32, 64 ];
arr = arr.orderBy(comparer.descending);

// results
orderBy comparer.descending 81
orderBy comparer.descending 64
orderBy comparer.descending 43
orderBy comparer.descending 32
orderBy comparer.descending 23
orderBy comparer.descending 8
orderBy comparer.descending 4

Combination

Array.union( first, second )

var first   = [1,2,3,[4,5]];
var second  = [[6,7,8],9,10];
var union    = first.union(second);

// results var union
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = [4,5]
array[4] = [6,7,8]
array[5] = [9]
array[6] = [10]

Object.union( first, second )

var person1 = { "name"      : { first:"Junil", last:"Um" },
                "address"   : { country:"South Korea", city:"Seoul" },
                "email"     : "powerumc at gmail" };
var person2 = { "name"      : { first:"Apple", last:"MacBook" },
                "address"   : { country:"U.S", city:"N/A" },
                "email"     : "[email protected]" };

var union   = Object.union(person1, person2);

// results var union
array[0] =  { "name"      : { first:"Junil", last:"Um" },
              "address"   : { country:"South Korea", city:"Seoul" },
              "email"     : "powerumc at gmail" }
array[1] =  { "name"      : { first:"Apple", last:"MacBook" },
              "address"   : { country:"U.S", city:"N/A" },
              "email"     : "[email protected]" }

Join

Array.innerJoin( first, second, primaryKey, foreignKey, selector )

var firstjoin = [ 	{ name: "Junil Um" },
					{ name: "Chulsu" },
					{ name: "Jane" },
					{ name: "Paris" } ];

var secondjoin = [ 	{ name: "Junil Um", 	addr: { addr1: "Junil Addr1", 			addr2: "Junil Addr2" }},
					{ name: "Chulsu.", 		addr: { addr1: "Chulsu Addr1", 			addr2: "Chulsu Addr2" }},
					{ name: "Jane", 		addr: { addr1: "Jane Addr1", 			addr2: "Jane Addr2" }},
					{ name: "Paris...",		addr: { addr1: "Paris Addr1",		 	addr2: "Paris Addr2" }} ];

var result = firstjoin.join( secondjoin, function(a) { return a.name; },
										 function(b) { return b.name; },
										 function(a,b) { return { a: a.name, b: b.addr.addr1 }; });

Numbers

sum( selector )

var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = arr.sum();                                  // 55

var arr = [1,2,3,"4",5,6,7,8, "9", "10.5"];
var sum = arr.sum();                                  // 55.5

var arr = [1,2,3,4,5,6,7,8,9, 10.5];
var sum = arr.sum(function(i) { return i / 2; });     // 27.75

average( selector )

var arr = [1,2,3,4,5,6,7,8,9,10];
var avg = arr.average();                               // 5.5

var arr = [1,2,3,"4",5,6,7,8, "9", "10.5"];             // 5.55
var avg = arr.average();

var arr = [1,2,3,4,5,6,7,8,9, 10.5];
var avg = arr.average(function(i) { return i * 2; });   // 11.1
}

range(start, max, step ) and Array.range( start, max, step ) likes range method of python language.

var arr = [0,1,2,3,4,5];
arr.range(6, 10);                   // 0,1,2,3,4,5,6,7,8,9  ** arr passed reference type **

var range = [].range(0,10);         // 0,1,2,3,4,5,6,7,8,9

var arr = Array.range(10);          // 0,1,2,3,4,5,6,7,8,9
var arr = Array.range(10, 20);      // 10,11,12,13,14,15,16,17,18,19
var arr = Array.range(0, 10, 2);    // 0,2,4,6,8

Objects and Array

Object.clone( first, second )

var person = {  "name"      : { first:"Junil", last:"Um" },
                "address"   : { country:"South Korea", city:"Seoul" },
                "email"     : "powerumc at gmail" };

var clone = Object.clone(person);

// results var clone
{  "name"      : { first:"Junil", last:"Um" },
   "address"   : { country:"South Korea", city:"Seoul" },
   "email"     : "powerumc at gmail" }

Array.clone( first, second )

var arrNum = [1,2,3,4,5,6,7,8,9,10];
var clone  = Object.clone(arrNum);

// results var clone
1,2,3,4,5,6,7,8,9,10

union( second )

var first    = [1,2,3,4,5];
var second   = [6,7,8,9,10];
var union    = first.union(second);

// results var union
array.union = 1,2,3,4,5,6,7,8,9,10