Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   отсортировать массив (https://javascript.ru/forum/misc/57692-otsortirovat-massiv.html)

Moloch 14.08.2015 23:05

отсортировать массив
 
Здравствуйте, подскажите пожалуйста как отсортировать такой вот массив
var arr = ["кокос", "абрикос", "банан", "персик" "апельсин1","апельсин2"]
так, чтобы все апельсины были сначала, а остальная жрачка отсортировалась по алфавиту после апельсинов. Нужно чтоб массив стал таким arr = ["апельсин1","апельсин2","абри ос","банан","кокос","персик"]. Я сделал так:
$(function(){
var arr=["апельсин1","апельсин2","абрикос","банан","кокос","персик"]
var result_arr=[];
arr.sort();
var nameLengths= arr.filter(function(name) {
if (name.indexOf("апельсин")+1) {
result_arr.push(name)
}
return name.indexOf("апельсин");
});

$('h1').html(result_arr.concat(nameLengths).join());
})


но я хочу отсортировать при помощи метода sort().
такой вот код вставляет все апельсины вначало, но не сортирует остальную жрачку по алфавиту
function compareElements(a,b){
      
       if ((a.indexOf("апельсин")+1)<(b.indexOf("апельсин")+1)) return 1;
       if ((a.indexOf("апельсин")+1)>(b.indexOf("апельсин")+1)) return -1;
    }
  arr.sort(compareElements);

рони 14.08.2015 23:55

Moloch,
<script>
var arr = ["кокос", "абрикос", "банан", "персик" ,"апельсин1","апельсин2"];
function fn(a, b) {
    var c = /^апельсин/;
    return c.test(a) == c.test(b) ? a < b ? -1 : a > b ? 1 : 0 : c.test(a) ? -1 : 1
};
document.write(arr.sort(fn))
</script>

Moloch 15.08.2015 09:27

Благодарю! то что нужно.


Часовой пояс GMT +3, время: 00:34.