Сортировка объектов 4/5

Красиво написал))))))))))))))

А зачем во 2-ой строчке кода к “mass.length приписывать (- 1)”? Я понимаю что так нужно, но можете пожалуйста объяснить.

Моя уметь цикл и условие. Больше не уметь. Таки придется покупать интенсивы :rofl:

var getSortedArray = function (arr, nameKey) {
  arrValues = [];
  for (var i=0; i<arr.length; i++) {
    arrValues[i] = arr[i][nameKey];
  };
  arrValues.sort(function(a, b) { return a - b; });
  for (var i=0; i<arr.length; i++) {
    for (var j=0; j<arr.length; j++) {
      if (arrValues[i] === arr[j][nameKey]) {
        arrValues[i] = arr[j];
      };
      if (arrValues[i] === arrValues[i-1]) {
        arrValues[i] = arr[j];
      };
    };
  };
  return arrValues;
};

В принципе @Hierumo уже реализовал то же самое (я думал все через стрелочные переделать, но лень)

Давно не спойлер!

function getSortedArray(array, key) {
return array.sort((a, b) => a[key] - b[key]);
}

просто переписываем массив

Сводка
var getSortedArray = function (arr, name){
   for (var i = 0; i < arr.length - 1; i++){
    for (var j = i+1; j < arr.length; j++){
      if (arr[i][name] > arr[j][name]){
        arr.push(arr[i]);
        arr.splice(i,1);
      }      
    }
  }
  return arr;
}
2 Симпатий
var getSortedArray = function (arrayList, nameKey) {
  
  for (var i = 0; i < arrayList.length - 1; i++) {
    var minValue = arrayList[i];
    
    for (var j = i + 1; j < arrayList.length; j++) {
      if (arrayList[j][nameKey] < arrayList[i][nameKey]) {
        minValue = arrayList[j];
        var replace = arrayList[i];
        arrayList[i] = minValue;
        arrayList[j] = replace;
      }
    }
  }
  
  return arrayList;
}
1 Симпатия

Я стараюсь выполнять задания только на основе полученных знаний и вот что выходит
var getSortedArray = function(arr, key){
for (var i = 0; i < arr.length - 1; i++){
for (var j = 0; j < arr.length - 1 - i; j++){
if(arr[j + 1][key] < arr[j][key]){
var flag = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = flag;
}
}
}

return arr;
};

Что-то я упустил в каких случаях применяется mass.length - 1, а в каких mass.length?

Здравствуйте!
Мой вариант:

let getSortedArray = (arr, keyOfObj)=>arr.sort((a,b)=>a[keyOfObj] - b[keyOfObj])

вариант без стрелочных функций

const getSortedArray = function(array, key) {
  return array.sort(function(a, b) {
    return a[key] - b[key];
  });
}

А Вы не знаете случайно почему здесь не работает обращение к ключам через точку? вместо a[key] - b[key] ---- a.key - b .key

ну там где с точкой, должно быть четкое название ключа key. Т.е. сортироваться будут только объекты с ключом, который так и называется “key”, а не передаваемый ключ из аргументов функции

Спасибо большое) Теперь пазл сложился полностью у меня)))

Тому що у об’єкта немає таких ключів, а ключами є змінні, тому береться в [ ]

const getSortedArray = (arr, key)=> arr.sort((a,b)=>a[key]-b[key])

Мое решение использую только пройденный материал:

let getSortedArray = function (array, keyName) {

for (let i=0; i<array.length-1; i++) {
  let swap = array[i];
      for (let j=i+1; j<array.length; j++) {
        if (array[j][keyName] < array[i][keyName]) {
            array[i] = array[j];
            array[j] = swap;
            swap = array[i];            
        }         
      }   
}

return array
}

Моё решение:

let getSortedArray = function (array, name) {
  for (let i = 0; i <= array.length - 2; i++) {
    let minValue = array[i];
    for (let j = i + 1; j <= array.length - 1; j++) {
      if (minValue[name] > array[j][name]) {
        minValue = array[j];
        let swap = array[i];
        array[i] = minValue;
        array[j] = swap;
      }
    }
  }
  return array;
}
1 Симпатия

Не совсем понятно как ты поменял объекты местами в массиве

Потому что последний элемент массива не нужно сортировать, т.к. все элементы перед ним уже отсортированы. Там в любом случае будет наибольший элемент.