3.0.9 • Published 9 years ago
array-x v3.0.9
array-x.js
Functional methods (inspired by LINQ) on JavaScript arrays
Examples
var ArrayX: typeof X.Array = require("array-x");
var arr = new ArrayX<any>(
new Date("March 21, 2020"),
/abc[.]+/g,
"a", "b", "c",
1, 2, 3, 4, 5, 6, 7,
[
0,
1
],
[
2,
3
],
[
4,
5,
[
6,
7,
[
8,
[
9,
10
]
]
]
],
"last"
);
console.log("first(): " + arr.first());
console.log("last(): " + arr.last());
console.log("skip(2): " + arr.skip(2));
console.log("where(x=>x>3):" + arr.where(x => x > 3));
console.log("select(x=>x.length): " + arr.select(x => x.length));
console.log("flatten(): " + arr.flatten());
console.log("append(): " + arr.append(["a", "b", "c"]));Output:
first(): Sat Mar 21 2020 00:00:00 GMT-0700 (Pacific Daylight Time)
last(): last
skip(2): a,b,c,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,last
where(x=>x>3):Sat Mar 21 2020 00:00:00 GMT-0700 (Pacific Daylight Time),4,5,6,7
select(x=>x.length): ,,1,1,1,,,,,,,,2,2,3,4
flatten(): Sat Mar 21 2020 00:00:00 GMT-0700 (Pacific Daylight Time),/abc[.]+/g,a,b,c,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,last
append(): Sat Mar 21 2020 00:00:00 GMT-0700 (Pacific Daylight Time),/abc[.]+/g,a,b,c,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,last,a,b,cAPI
declare namespace X {
type Func = (value: any, index?: number) => any
type Predicate = (value: any, index?: number) => boolean
type Accumulator = (accumulatedValue: any, currentValue: any, index?: number) => any
type Dictionary<T> = { [key: string]: T }
class Array<T> implements ArrayLike<T> {
constructor(...items: T[]);
distinct(): Array<T>;
accumulate(initial: any, accum?: Accumulator): any;
union(array: Array<any>): Array<T>;
select(func?: Func): Array<T>;
where(func?: Predicate): Array<T>;
orderBy(func?: Func): Array<T>;
orderByDesc(func: Func): Array<T>;
firstOrDefault(predicate?: Predicate): T;
first(predicate?: Predicate): T;
lastOrDefault(predicate?: Predicate): T;
last(predicate?: Predicate): T;
all(predicate?: Predicate): boolean;
any(predicate?: Predicate): boolean;
take(count: number): Array<T>;
skip(count: number): Array<T>;
sum(func?: Func): number;
avg(func?: Func): number;
count(func?: Func): number;
min(func?: Func): number;
max(func?: Func): number;
/*
* Groups the array values into a dictionary of arrays.
* Grouping keys are determined by applying the <func> function arg to each element
*/
groupBy(func?: Func): X.Dictionary<X.Array<T>>;
/*
* Groups this array into an dictionary of <keyCount> arrays,
* each containing the same number of elements, except possibly the last array,
* which may have less elements than the others
* if the length of this array is not divisible by <keyCount>
*/
groupByNumber(keyCount: number): X.Dictionary<X.Array<T>>;
/*
* groups this array according to <key> generator function and then
* aggregates the resulting dictionary over <value> generator function
*/
groupAggregate(
key: string | X.Func,
value: string | X.Func,
aggregation: "min" | "max" | "sum" | "avg" | "count")
: X.Dictionary<number>;
removeItem(item: any): Array<T>;
removeAt(index: number, count?: number): Array<T>;
insert(index: number, ...items: any[]): Array<T>;
append(...items: any[]): Array<T>;
flatten(): Array<T>;
/**
* Determines whether an array includes a certain element, returning true or false as appropriate.
* @param searchElement The element to search for.
* @param fromIndex The position in this array at which to begin searching for searchElement.
*/
contains(obj: T, fromIndex?: number): boolean;
static fromSize(size?: number): Array<any>;
static fromRange(from: number, to: number): Array<any>;
/**
* Gets the length of the array. This is a number one higher than the highest element defined in an array.
*/
readonly length: number;
readonly [n: number]: T;
}
}Install
npm install array-x --save
3.0.9
9 years ago
3.0.8
9 years ago
3.0.7
9 years ago
3.0.6
9 years ago
3.0.5
9 years ago
3.0.4
9 years ago
3.0.3
9 years ago
3.0.1
9 years ago
3.0.0
9 years ago
2.0.9
9 years ago
2.0.8
9 years ago
2.0.7
9 years ago
2.0.6
9 years ago
2.0.5
9 years ago
2.0.4
9 years ago
2.0.3
9 years ago
2.0.2
9 years ago
2.0.1
9 years ago
2.0.0
9 years ago
1.0.7
10 years ago
1.0.6
10 years ago
1.0.5
10 years ago
1.0.4
10 years ago
1.0.3
10 years ago
1.0.2
10 years ago
1.0.1
10 years ago
1.0.0
10 years ago