Move element to start of array

by Jorge Bustos Pereda

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<p>Original:</p>
<pre id="original"></pre>
<p>After 3 to start: moveToStart(list, function(e) { return e == 3;})
<pre id="moved3"></pre>
<p>After even numbers to start: moveToStart(list, function(e) { return e%2 == 0;})</p>
<pre id="movedEven"></pre>
<p>After non-existen number to start: moveToStart(list, function(e) { return e == 500;})</p>
<pre id="moved500"></pre>

CSS

p {
  font-family: Segoe, Arial;
  font-weight: bold;
  margin: 15px 0 0 0;
}

pre {
  margin: 0;
}

JavaScript

var list = [1,2,3,4,5];

var moveToStart =function(list, predicate) {
    var found = _.remove(list, predicate);
    list.unshift.apply(list, found);
};

$('#original').text(JSON.stringify(list));

moveToStart(list, function(e) { return e == 3;})
$('#moved3').text(JSON.stringify(list));

moveToStart(list, function(e) { return e%2 == 0;})
$('#movedEven').text(JSON.stringify(list));

moveToStart(list, function(e) { return e == 500;})
$('#moved500').text(JSON.stringify(list));