2016-11-19 3 views
0

У меня есть функция, которая urlScores возвращает массив объектов в видеСортировка объектов в массиве в Javascript

[{"url":"facebook","score":2},{"url":"reddit","score":1},{"url":"stackoverflow","score":3}] 

Я попросил, чтобы отсортировать этот массив в отношении его счета с помощью пузырьковой сортировки.

Что я пробовал делать, это создание функции сортировки пузырьков, которая возвращает объект, возвращаемый с urlScores, и сортирует его.

function sort(object) 
{ 
    for(var i= 0; i < object.length; i++){ 
    if (object[i].score > object[i+1].score) { 
     var temp = object[i] 
     object[i]=object[i+1] 
     object[i+1]=temp 
    } 
    } 
} 

И функция, которая должна вызываться для сортировки массива выглядит следующим образом: Это не похоже

function rankedScores(web,pattern) 
{ 
    return (sort(urlScores(web,pattern))) 
} 

это работает, я столкнулся с TypeError: object[(i + 1)] is undefined

Любая помощь приветствуется

+1

Когда вы говорите [я] .. Что такое? – Samay

+0

Ошибка, вызванная тем, что вы прошли индекс, вам нужно проверить индекс последнего элемента. Массив работает с индексом -1 от 0,1, n – karman

+0

Samay, отредактировал его сообщение, спасибо. – Pete

ответ

0

Я скорректировал вашу функцию сортировки.

function sort(a) { 
    for (var i = 0; i < a.length - 1; i++) { 
     if (a[i].score > a[i + 1].score) { 
      var temp = a[i] 
      a[i] = a[i + 1] 
      a[i + 1] = temp 
     } 
    } 
    return a; 
} 

Вот пример

var arr= '[{"url":"facebook","score":2},{"url":"reddit","score":1},{"url":"stackoverflow","score":3}]'; 

console.log(sort(arr)); 
-1

var a = [{"url":"facebook","score":2},{"url":"reddit","score":1},{"url":"stackoverflow","score":3}]; 
 
    
 
function bubbleSort(a) 
 
{ 
 
    var swapped; 
 
    do { 
 
     swapped = false; 
 
     for (var i=0; i < a.length-1; i++) { 
 
      if (a[i].score > a[i+1].score) { 
 
       var temp = a[i]; 
 
       a[i] = a[i+1]; 
 
       a[i+1] = temp; 
 
       swapped = true; 
 
      } 
 
     } 
 
    } while (swapped); 
 
} 
 
    
 
bubbleSort(a); 
 
console.log(a);

Смежные вопросы