簡體   English   中英

我正在嘗試使用javascript中的選擇排序算法對數組中的對象進行排序

[英]I'm trying to sort the objects in the array using selection sort algorithm in javascript

這是我要輸出的內容:

[ { name: 'harry', age: '21' },
  { name: 'john', age: '23' },
  { name: 'jack', age: '25' } ]

但我得到這個:

[ { name: 'john', age: '23' },
  { name: 'harry', age: '21' },
  { name: 'jack', age: '25' } ]

這是我的代碼:

  var persons = [
  {
  "name": "john",
  "age": "23"
  },
  {
  "name": "harry",
  "age": "21"
  },
  {
  "name": "jack",
  "age": "25"
  }
];

function selectionSortObjects (arr){
  var length = arr.length;
  for(var i = 0; i < length; i++){
    var min = [i].age;
    for(var j = i+1; j < length; j++) {
      if(arr [j].age > arr[min]){
        min = [j].age;
      }
    }
    if (min != i.age) {
      var k = arr[i].age;
      arr[i].age = arr[min];
      arr[min] = k;
    }
  }
  return arr;
}

console.log(selectionSortObjects(persons));
// console.log(persons[0].age);

我究竟做錯了什么? 因為沒有錯誤,但是輸出錯誤。 我正在嘗試使用選擇排序算法按年齡對結果進行排序

您要求選擇排序方法。 並不是這樣,但是會根據提供的輸入為您提供所需的結果。

persons.sort(function(a, b){return a.age-b.age});

由於人員是一個數組,我們可以使用數組排序並傳遞一個自定義函數,該函數比較數組中每個對象的年齡

我修改了selectionSortObjects函數以使其按預期工作。 這是新版本:

function selectionSortObjects (arr){
  var length = arr.length;
  for(var i = 0; i < length; i++){
      var min = {
          value: arr[i],
          index: i
      }
    for(var j = i+1; j < length; j++) {
      if(arr[j].age < min.value.age){
        min.value = arr[j];
          min.index = j;
      }
    }
    if (min.value != arr[i]) {
      var k = arr[i];
      arr[i] = min.value;
      arr[min.index] = k;
    }
  }
  return arr;
}

看看JSFiddle中的完整源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM