'Сортировка объектов' не проходит вторая проверка

Столкнулся с проблемой, выполняю задание методом ‘Сортировка выбором’, первую проверку проходит, вторую нет. Буду благодарен за помощь.

let getSortedArray = function (data, key) {
  
  for (let i = 0; i <= data.length - 2; i++) {
    let min = i;
    
    for (let j = i + 1; j <= data.length - 1; j++) {
      if(data[i][key] > data[j][key]) {
        min = j;
      }
    }
    
    let swap = data[i];
    data[i] = data[min];
    data[min] = swap;
  }
  
  return data;
}

Получилось решить таким спобом

let getSortedArray = function (data, key) {
  
  for (let i = 0; i <= data.length - 2; i++) {
    let minValueTmp = data[i][key];
    let minItemIndex = i;
    
    for (let j = i + 1; j <= data.length - 1; j++) {
      if(minValueTmp > data[j][key]) {
        minValueTmp = data[j][key];
        minItemIndex = j;
      }
    }

    let swap = data[i];
    data[i] = data[minItemIndex];
    data[minItemIndex] = swap;
  }
  
  return data;
}

let getSortedArray = function (arr, key) {

for (let i = 0; i <= arr.length - 2; i++) {

let minValue = arr[i]

for (let j = i + 1; j <= arr.length - 1; j++) {
  
  if (arr[j][key] < arr[i][key]) {
    minValue = arr[j]
    let swap = arr[i]
    arr[i] = minValue
    arr[j] = swap
  }
}

}
return arr
}
Получилось вот так

var getSortedArray = function(arr, keyName) {
var x = 0;
for(var i = 0; i < arr.length-1; i++) {
for(var j = i+1; j < arr.length; j++) {
if(arr[i][keyName] > arr[j][keyName]) {
x = arr[i];
arr[i] = arr[j];
arr[j] = x;
}
}
}
return arr;
}

let getSortedArray = function(arr, key){
  
  for(let i = 0; i < arr.length - 1; i++){
    for (let j = i + 1; j < arr.length; j++){
      
      if(arr[i][key] > arr[j][key]){
        
        let swap =  arr[i];
        arr[i] = arr[j];
        arr[j] = swap;
        
      }
    }
  }
  return arr
}

Обрати внимание что проверка, и сортировка происходит в условии второго цыкла.
в первом цыкле береться data[i] елемент массива, а в тором цыкле берутся последующие елементы массива. Во втором массиве ты сравниваешь елементы i=0 и j=1 …jn и формируешь новый массив.
На второй итерации в первый цикл, ты получаешь массив в котором 0 елемент самый меньший.
В втором цыкле ты сравниваешь уже i=1 и j=2 …jn и так пока не закончится цыкл.

let getSortedArray = function (data, key) {
  
  for (let i = 0; i <= data.length - 2; i++) {
    let min = i;
    
    for (let j = i + 1; j <= data.length - 1; j++) {
      if(data[i][key] > data[j][key]) {
        min = j;
        
        let swap = data[i];
        data[i] = data[min];
        data[min] = swap;
        
      }
    }
  }
  
  return data;
}

Эта переменная является избыточной let min = i;

let getSortedArray = function (data, key) {
  
  for (let i = 0; i <= data.length - 2; i++) {
    
    for (let j = i + 1; j <= data.length - 1; j++) {
      if(data[i][key] > data[j][key]) {
        
        let swap = data[i];
        data[i] = data[j];
        data[j] = swap;
        
      }
    }
  }
  
  return data;
}
let getSortedArray = function(array, key) {

  for(let j = 0; j < array.length; j++) {
    for(let i = 0; i < array.length; i++) {
      
      if(array[j][key] < array[i][key]) {
        let swap = array[i];
        array[i] = array[j];
        array[j] = swap;
        
      };
    };
  };
return array;
};
1 лайк