Пытаясь создать массив, который выводит: сколько каждого значения в МАССИВЕ

информация до: я наполовину преуспел, так как мне удалось его распечатать, и он не зациклился, однако мне не удалось найти причину, по которой он все еще печатает неопределенное


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>")
                
            }

        }
    }

Как именно текущий результат number 2 is 1 times / number 3 is 1 times / number 4 is 2 times подпадает под «полууспешный» здесь, когда эти цифры уже не имеют смысла?

CBroe 22.03.2022 10:31

Отвечает ли это на ваш вопрос? Подсчет вхождений/частоты элементов массива

Lars Flieger 22.03.2022 10:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
44
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ну вот:

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>
  • Это даст вам вхождения каждого числа в объект.

Если вам нужна помощь, чтобы обернуть это в ваш пользовательский интерфейс. Дай мне знать :)

Lars Flieger 22.03.2022 10:35

я пытался использовать его в doc.write() или innerHTML, но он вернул [объект, объект], я думаю, он работает только в консоли?

edwin hennum 22.03.2022 10:50

@edwinhennum Нет, ты тоже можешь его использовать. Вы хотите, чтобы я обновил ответ? Какой результат вы хотите?

Lars Flieger 22.03.2022 11:02

кстати, спасибо за ответ :), поэтому я создаю массив со значениями с одинаковыми значениями, и я хочу записать его в свой HTML-документ. поэтому пример: 1 встречается 2 раза и т.д...

edwin hennum 22.03.2022 11:07

@edwinhennum Добавлено :)

Lars Flieger 22.03.2022 11:17
Ответ принят как подходящий
  • мы можем использовать сокращение, чтобы вычислить, сколько раз отображается число
  • тогда мы можем использовать 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)

Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать добавьте дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 22.03.2022 10:51

Другие вопросы по теме