我正在尝试使用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});
因为persons是一个数组,所以我们可以使用数组sort并传递一个自定义函数来比较数组中每个对象的年龄
我修改了您的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的完整源代码
相关文章:
- 在数组的 2/3 上调用自身的排序算法
- JavaScript排序算法不起作用 - 任何明显的我做错了
- 用Javascript实现了带有合并排序算法的反转计数
- 这两种数组排序算法是否会为任何输入产生不同的输出
- 何时以及为什么某些项目甚至无法在排序算法中进行比较
- 这个排序算法叫什么名字
- 对排序算法进行动画处理
- 引导表:在对列进行排序时,是否可以使列/表使用稳定的排序算法
- 选择排序算法不起作用..警告..我是新手
- Javascript中的排序算法
- 为什么这种排序算法会在浏览器之间产生不一致的结果
- 对于我的快速排序算法,我如何使它对字符串和对象也进行排序
- Javascript快速排序算法实现
- 未识别的排序算法
- JavaScript中的归并排序算法和内存问题
- 在javascript中处理字符串、数字或两者时应该使用什么排序算法
- 我正在尝试使用javascript中的选择排序算法对数组中的对象进行排序
- 模糊排序算法合并稳定性
- 更好的排序算法
- 用于解释整个整数而不是字符的字母数字排序算法- Javascript