2016-11-19 8 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

ある[i]は...何ですか? – Samay

+0

最後の要素のインデックスをチェックする必要があるインデックスを渡したためにエラーが発生しました。配列は0,1、nから0のインデックスで動作します – 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);

関連する問題