JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<h4>People</h4>
<ul data-bind="foreach: people">
    <li>
        Name at position <span data-bind="text: $index"> </span>:
        <span data-bind="text: name"> </span>
        <a href="#" data-bind="click: $parent.removePerson">Remove</a>
    </li>
</ul>
<button data-bind="click: addPerson">Add</button>

JavaScript

function AppViewModel() {
    var self = this;

    self.people = ko.observableArray([
        {name: 'Bert'}, 
        {name: 'Charles'}, 
        {name: 'Denise'},
        {name: 'Adam' }
    ]);
    
    self.sortedPeople = ko.computed(function() {
        return self.people().sort(function(l,r) {
            return l.name == r.name ? 0 : (l.name < r.name ? -1 : 1);
        });
    });

    self.addPerson = function () {
        self.people.push({
            name: "Aardvark"
        });
    };

    self.removePerson = function () {
        self.people.remove(this);
    };
}

ko.applyBindings(new AppViewModel());