2.1.1 • Published 8 years ago

knockout-arraytransforms v2.1.1

Weekly downloads
4
License
X11
Repository
github
Last release
8 years ago

knockout-arraytransforms Build Status

Allows for creating efficient transformations of observable arrays.

var integers = ko.observableArray([
    ko.observable(10), ko.observable(9),
    ko.observable(8),  ko.observable(7),
    ko.observable(6),  ko.observable(5),
    ko.observable(4),  ko.observable(3),
    ko.observable(2),  ko.observable(1)
]);

var evenIntegersOver5 =
    integers.sortBy(function (n) {
        return n();
    }).filter(function (n) {
        n = n();
        return n > 5 && n % 2 === 0;
    });

// ko.toJS(evenIntegersOver5) -> [6, 8, 10];

// The sortBy and filter callbacks are only called for these new items, not
// every item in the array.
integers.splice(0, 0, ko.observable(12), ko.observable(11));

// ko.toJS(evenIntegersOver5) -> [6, 8, 10, 12];

// Set the observable containing 1 in the original array to 14. Again, the
// sortBy and filter callbacks are only called once on index 11. sortBy has
// all of the previous sort keys cached and performs a fast binary sort.
integers()[11](14);

// ko.toJS(evenIntegersOver5) -> [6, 8, 10, 12, 14];

Transformations

all/every, any/some, filter/reject, groupBy, map, sortBy.

Callback functions receive two arguments: an item in the original array, and an observable containing the index of that item in the original array.

var animals = ko.observableArray(["cat", "dog"]);

var ranks = animals.map(function (name, index) {
    return name + ": " + (index() + 1);
});

// ranks() -> ["cat: 1", "dog: 2"];

animals.reverse();

// ranks() -> ["dog: 1", "cat: 2"];

groupBy returns an array of objects containing a key string and a values observableArray.

var integers = ko.observableArray([1, 2, 3, 4, 5]);

var evenOrOdd = integers.groupBy(function (n) {
    // return value is always coerced into a string
    return n % 2 === 0;
});

// evenOrOdd() -> [
//     { key: "false", values: ko.observableArray([1, 3, 5]) },
//     { key: "true", values: ko.observableArray([2, 4]) }
// ]

Create your own

For examples, see ko.arraytransforms.createTransform in the source code.

License

X11. See LICENSE.

2.1.1

8 years ago

2.0.0

9 years ago

1.0.0

9 years ago

0.6.0

9 years ago

0.5.3

9 years ago

0.5.2

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago