JSFiddle - React, Tailwind, and code Playground

HTML

<div ng-app='myApp' ng-controller="ArrayController">
    <select id="select" size="9" ng-model="persons" ng-options="item as item.name for item in peoples" multiple></select>
    <br/>
    <button ng-click="moveUp()">Up</button>
    <br/>
    <button ng-click="moveDown()">Down</button>
    <br/>
</div>

JavaScript

var app = angular.module('myApp', []);
app.controller('ArrayController', function ($scope, $filter) {
    $scope.peoples = [{
        name: 'Jacob'
    }, {
        name: 'Sunny'
    }, {
        name: 'Lenu'
    }, {
        name: 'Mathew'
    }, {
        name: 'Ferix'
    }, {
        name: 'Kitex'
    }];
    
    $scope.peoples =$filter('orderBy')($scope.peoples, 'name');

    $scope.moveUp = function () {
        var select = document.getElementById("select");
        var i1=0, i2=1;
        while (i2 < select.options.length) {
            swapIf($scope.peoples,i1++,i2++);
        }
    };
    
    $scope.moveDown = function () {
        var select = document.getElementById("select");
        var i1=select.options.length-1, i2=i1-1;
        while (i1 > 0) {
            swapIf($scope.peoples,i1--,i2--);
        }
    };
    
    var swapVar = '';
    function swapIf(sel,i1,i2) {
        if ( ! select[i1].selected && select[i2].selected) {
            
            var obj1 = sel[i1];
            var obj2 = sel[i2];
            sel[i2] = obj1;
            sel[i1] = obj2;
            select[i1].selected = true;
            select[i2].selected = false;
        }
    }
});