array-model

Extension of native Array object to make it a collection model

Usage no npm install needed!

<script type="module">
  import arrayModel from 'https://cdn.skypack.dev/array-model';
</script>

README

Array-Model

Extension of native Array object to make it a collection model. But it still real Array. So you can you can just wrap any exist Array in your project.

Installation

via npm

npm install array-model

Usage

Just create a array, call method .model() and you will have great collection object.

Simple example prevents addition of objects with wrong type.

var arr = [].model();
arr.on('add', function(val, pos, arr) {
    if (typeof val !== 'number')
        arr.splice(pos, 1);
});

arr.push(42);
console.log(arr); // [42]
arr.push('24');
console.log(arr); // [42]
arr.push(24);
console.log(arr); // [42, 24]

Events work great even with assignments.

var arr = [1,2,3].model()
arr.on('add', function(val, pos) {
    console.log(val, pos);
});
arr.on('remove', function(val, pos) {
    console.log(val, pos);
});
arr[1] = 4
// 2, 1
// 4, 1

Array-Model provides useful getters for you!

var arr = [1,2,3].model();
arr.get(function(val) {
    return val*val;
});
console.log(array.slice()); // [1,4,9]
console.log(array[2]); // 9

See more examples in spec.coffee.

What Array-Model cannot do for you

Assignment to not exist values. It will not work and probably break your object.

var arr = [].model();
arr.on('add', function(val, pos) { // won't be fired
    console.log(val, pos);
});
arr[0] = 'data';