Как сделать функцию, которая сортирует и возвращает наиболее повторяющееся значение массива в порядке убывания в javascript, если мой массив:
const array = ["bill", "bill", "anup", "max", "bill", "max"]
и я хочу, чтобы функция возвращала ["bill", "max", "anup"]
, поскольку bill
является наиболее повторяющимся значением, поэтому оно находится в индексе 0
, а max
является вторым повторяющимся значением, поэтому его индекс равен 1
, а 2
— в for loop
.
можно ли сделать эту функцию? Я слышал, что это делается с помощью вложенных ["bill", "max", "anup"]
, но я не уверен, как заставить это работать.
Вам нужно перебрать массив и найти повторяющиеся элементы.
var duplicate = []
const array = ["bill", "bill", "anup", "max", "bill", "max"]
function findDuplicate(arr){
for(var i = 0; i < arr.Length; i++) {
for(var j = i + 1; j < arr.Length; j++) {
if (arr[i] == arr[j])
duplicate.push(arr[j]);
}
return duplicate;
}
findDuplicate(arr);
Затем вы можете отсортировать массив. Я советую использовать алгоритм пузырьковой сортировки для начинающих!
Брекеты выглядят неуравновешенными. Эта последняя строка должна быть рекурсивным вызовом, или вы намеревались передать array
?
const array = ["bill", "bill", "anup", "max", "bill", "max"]
console.info(x(array))
function x(list) {
let tmp = new Map()
array.forEach(x => {
tmp.set(x, (tmp.get(x) || 0) + 1)
})
return [...tmp.entries()].sort((a, b) => {
return a[1] < b[1] ? 1 : -1
}).map(x=>x[0])
}
const array = ["bill", "bill", "anup", "max", "bill", "max"]
let result = [...new Set(array)]
.sort((a,b) => array.filter(e => b===e).length - array.filter(e => a===e).length)
console.info(result)
const returnMost = (array) => {
const arrayCounter = {
}
array.forEach(elem => {
if (arrayCounter[elem]) {
arrayCounter[elem]++
} else {
arrayCounter[elem] = 1
}
})
const result = Object.keys(arrayCounter).sort((a,b) => {
if (arrayCounter[a] > arrayCounter[b]) {
return -1
} else {
return 1
}
} )
console.info(result);
return result
}
Для массива из вопроса это возвращает ["bill", "max", "anup"]
в соответствии с запросом?
Ваш интерпретатор должен быть более подробным, чем тот, который я использовал, который просто показывает "bill"
.
Поскольку это случается со всеми нами, просто будьте осторожны с ними.
да, я слышал об алгоритме пузырьковой сортировки, я проверю его, спасибо.