extending observableArrays with linq.js

https://groups.google.com/d/topic/knockoutjs/MEtE642TrY0/discussion

HTML

<script src="http://knockoutjs.com/downloads/knockout-2.0.0.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.min.js "></script>
<input data-bind="value: searchTerm, valueUpdate: 'afterkeydown'" />
<hr/>
<ul data-bind="foreach: filteredItems">
    <li data-bind="text: name"></li>
</ul>

JavaScript

ko.observableArray.fn.where = function(predicate) {
    
    return Enumerable.From(this())
           .Where(predicate)
           .ToArray(); 
};

var ViewModel = function() {
    this.items = ko.observableArray([
        { name: "one" },
        { name: "two" },
        { name: "three" },
        { name: "four" }
        ]);
    
    this.searchTerm = ko.observable("");
    
    this.filteredItems = ko.computed(function() {
        var term = this.searchTerm();
        
        return this.items.where(function(item) { 
            return item.name.indexOf(term) > -1; 
        });
    }, this);
};


ko.applyBindings(new ViewModel());