[英]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.