Здравствуйте!
Мой вариант:
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;
}
Не совсем понятно как ты поменял объекты местами в массиве
Потому что последний элемент массива не нужно сортировать, т.к. все элементы перед ним уже отсортированы. Там в любом случае будет наибольший элемент.
Я решил попрактиковать алгоритмы и написал quicksort. Код проходит первый тест, а на втором выдает Timeout error. Не очень понимаю как это может быть, если тут примеры кода за O(n^2) работают и проходят.
Код ниже:
let quickSort = function(array, key, low=0, high=NaN) {
if (isNaN(high)) {
high = array.length - 1
};
let left = low;
let right = high;
let pivot = array[Math.floor((low+high)/2)][key];
if (left >= 0 && right >= 0 && left < right) {
while (left < right) {
if (array[left][key] < pivot) {
left++;
}
else if (array[right][key] > pivot) {
right--;
}
else {
[array[left], array[right]] = [array[right], array[left]]
};
};
quickSort(array, key, low, right);
quickSort(array, key, left + 1, high);
};
};
let getSortedArray = function(array, key) {
quickSort(array, key);
return array;
};
var getSortedArray = function (mass, key) {
for (var i = 0; i < mass.length - 1; i++) {
for (var j = i + 1; j < mass.length; j++) {
if (mass[i][key] > mass[j][key]) {
var swap = mass[i];
mass[i] = mass[j];
mass[j] = swap;
}
}
}
return mass;
}