информация до: я наполовину преуспел, так как мне удалось его распечатать, и он не зациклился, однако мне не удалось найти причину, по которой он все еще печатает неопределенное
HTML: <button id = "btn">button</button>
<label id = "textarea"></label>
var tall = [4, 5, 2, 3, 4, 6, 1, 2, 0, 9, 7, 6, 8, 5, 6, 4, 2, 3, 5]
var btn = document.getElementById("btn");
tall.sort(function(a, b){return a-b})
btn.onclick = function(){
for( var i = 0; i < tall.length; i++){
a = 0;
for(var j = 0; j<i ; j++){
a++;
tall.splice(i, 2)
document.write("number "+tall[i]+" is "+ a+" times<br>")
}
}
}
Отвечает ли это на ваш вопрос? Подсчет вхождений/частоты элементов массива
Ну вот:
const list = document.querySelector('ul')
const button = document.querySelector('button')
const tall = [4, 5, 2, 3, 4, 6, 1, 2, 0, 9, 7, 6, 8, 5, 6, 4, 2, 3, 5]
// Cals result
const result = tall.reduce((res, value) => {
if (value in res)
res[value]++
else
res[value] = 1
return res
}, {})
button.addEventListener('click', () => {
list.innerHTML = ''
// Add li element for each result
Object.keys(result).forEach(res => {
const li = document.createElement('li')
li.textContent = `${res} occures ${result[res]} times`
list.append(li)
})
})
<button>Write data to list</button>
<ul>
<ul>
Если вам нужна помощь, чтобы обернуть это в ваш пользовательский интерфейс. Дай мне знать :)
я пытался использовать его в doc.write() или innerHTML, но он вернул [объект, объект], я думаю, он работает только в консоли?
@edwinhennum Нет, ты тоже можешь его использовать. Вы хотите, чтобы я обновил ответ? Какой результат вы хотите?
кстати, спасибо за ответ :), поэтому я создаю массив со значениями с одинаковыми значениями, и я хочу записать его в свой HTML-документ. поэтому пример: 1 встречается 2 раза и т.д...
@edwinhennum Добавлено :)
Object.entries
с forEach
- для отображения данных в пользовательском интерфейсе var tall = [4, 5, 2, 3, 4, 6, 1, 2, 0, 9, 7, 6, 8, 5, 6, 4, 2, 3, 5]
var btn = document.getElementById("btn");
btn.onclick = function(){
const objectResult = tall.reduce((a,c) => (a.hasOwnProperty(c) ? {...a, [c]: a[c] + 1} : {...a, [c]: 1}), {});
Object.entries(objectResult).forEach(([number, times]) => document.write(`number: ${number} is ${times} times<br>`))
}
<button id = "btn">button</button>
<label id = "textarea"></label>
Используя функцию сокращения, вы можете перебирать свой массив и генерировать выходные данные на основе действий, которые вы выполняете с каждым следующим значением в массиве. Мы начинаем с пустого объекта, если мы обнаруживаем, что nextValue еще не сохранено, мы сохраняем его в этом объекте со значением 1, если мы видим, что nextValue уже существует, мы увеличиваем счетчик в результате.
const data = [4, 5, 2, 3, 4, 6, 1, 2, 0, 9, 7, 6, 8, 5, 6, 4, 2, 3, 5]
const result = data.reduce((result, nextValue) => {
if (nextValue in result)
result[nextValue]++
else
result[nextValue] = 1
return result
}, {}) // initial result is an empty object set with ', {}'
console.info(result)
var tall = [4, 5, 2, 3, 4, 6, 1, 2, 0, 9, 7, 6, 8, 5, 6, 4, 2, 3, 5];
var map = tall.reduce(function(prev, cur) {
prev[cur] = (prev[cur] || 0) + 1;
return prev;
}, {});
console.info(map)
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать добавьте дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Как именно текущий результат
number 2 is 1 times / number 3 is 1 times / number 4 is 2 times
подпадает под «полууспешный» здесь, когда эти цифры уже не имеют смысла?