Как сделать из строки в <p> строку, а затем массив

Есть часть кода:

    var massive = [];


var newMass = massive.push(count1, count2, count3, count4, count5, count6, count7, count8, count9, count0);

var largest = Math.max.apply(null, massive); // выявляем макс. число
if (count1 == largest){
final.innerHTML += "<strong>1</strong> : " + "<em>" + largest + " ; ";
}

if (count2 == largest){
final.innerHTML += "<strong>2</strong> : " + "<em>" + largest + " ; ";
}

if (count3 == largest){
final.innerHTML += "<strong>3</strong> : " + "<em>" + largest + " ; ";
}

if (count4 == largest){
final.innerHTML += "<strong>4</strong> : " + "<em>" + largest + " ; ";
}

if (count5 == largest){
final.innerHTML += "<strong>5</strong> : " + "<em>" + largest + " ; ";
}

if (count6 == largest){
final.innerHTML += "<strong>6</strong> : " + "<em>" + largest + " ; ";
}

if (count7 == largest){
final.innerHTML += "<strong>7</strong> : " + "<em>" + largest + " ; ";
}

if (count8 == largest){
final.innerHTML += "<strong>8</strong> : " + "<em>" + largest + " ; ";
}

if (count9 == largest){
final.innerHTML += "<strong>9</strong> : " + "<em>" + largest + " ; ";
}

if (count0 == largest){
final.innerHTML += "<strong>0</strong> : " + "<em>" + largest + " ; ";
}

test.innerHTML = ""; // к концу прогона делаем все переменные пустыми,что-бы перезаписать в них новые числа
arr = "";
test.innerHTML = sorts;
} // конец фор
} // конец функции

Надо сделать из final строку вида(1:17 где 1 цифра, а 17 сколько раз она повторилась),а потом массив;
Весь проект https://codepen.io/Pikromat/pen/dgRWNE

По ссылке что ты кинул в div-е с id final уже записаны строки вида 6 : 14 ; 7 : 16 ; 2 : 13 ; 4 : 15 ; 8 : 16 ;.

Я вижу что значение в этой строке ты генерируешь самостоятельно. Значит у тебя есть данные, которые нужны для генерации это строки. Значит ты можешь взять эти данные и получить

строку вида(1:17 где 1 цифра, а 17 сколько раз она повторилась),а потом массив;

Напиши что дано и что нужно получить. Потому что сгенерировать строку а потом получить из нее данные - по-ненужному сложный путь.

Строка, то строка, но не то, этот код должен вычислять что-то типа вероятности выпадения чисел от 0 до 9, final.innerHTML, должна быть вида 1:17; 2:20 и т.п ( где 1,2 это цифры которые учавствовали в повторении, а 17,20 кол-во их повторений), и к примеру вы видите, что в final выведено 5 раз значения, так мне нужен код, чтобы их сравнить и вывести наибольшее, а для этого нужно приводить в массив(желательно), и что-бы в итоге было выведено наибольшее число типа(1:17),

вывести какое было чаще из этой строки

Из каких данных вычислять повторение цифр? И давай на “ты”. Мы тут все на “ты”

Я верно понял что исходные данные - это строка, скриншот которой ты кинул?

1 лайк

https://jsfiddle.net/gepuv8xs/

var node = document.getElementById('input')
var inputString = node.textContent // получаем чисто строку текста без формтирования и тегов
var valuPairs = inputString.split(';') // получаем массив строк вида 3 : 16, плюс будут "мусорные" строки без пар цифр из-за последнего ;
// Это важный момент - с помощью массива мы моделируем, "кодируем" часть предметной области. 
// на 0 месте будет количество повторений цифры 0, на 1 месте - количество повторений цифры 1 итд итд.
// позже мы будем увеличивать соответствующие количетва встречаний цифр
var frequency = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

// пробегаемся по valuPairs, преобразовываем строку с числом в число, суммируем количество повторений, не забываем про "мусорные" строки, которые просто не обрабатываем
for (var i = 0; i < valuPairs.length; i++) {
	var pairString = valuPairs[i].trim() // убираем пробелы из строк
  if (pairString) { // отсекаем мусорные пустые строки
  	var values = pairString.split(':')
    var digit = parseInt(values[0].trim()) // преобразовали цифру к числу
    var occurances = parseInt(values[1].trim()) // преобразовали строку с количеством повторений к числу
    frequency[digit] = frequency[digit] + occurances // инкрементируем значение в результирующем массиве
  }
}
alert(frequency.join(' '))

Я обычно не решаю задачи целиком ибо это часто неэтично. Но увидел что ты проделал/а некоторую работу самостоятельно.

Скорее всего тебе нужно было разобраться самостоятельно с проблемой, придумать алгоритм или это было тестовое задание для чего-то.

Приходи в следующий раз с проблемой, но не целой задачей. Например “как преобразовать строку в массив чисел” или “как лучше закодировать частоту встречания цифр”.

1 лайк

Спасибо, но почему выводятся просто цифры, я хотел что-то типа (2:20); и вот скриншот с итоговой строкой, хотелось бы сравнить, к примеру постовим по клику кнопки через for не 5, а 100 повторений, иотелось бы сравнить, каких цифр больше и сколько, я применял уже в коде Math.max.apply, но как это применить тут?

Если я верно понимаю задачу, то массива frequency достаточно чтобы создать строку вида 2:20. Что-то вроде (без учета разметки html)

var arr = [65, 4, 3, 12, 33, 1, 45, 2, 18, 4]
var str = ''
for (var i = 0; i < arr.length; i += 1) {
    str = str + i + ' : ' + arr[i] + ' ; '
}
alert(str)

Вообще не понимаю о чем ты. Какие повторения?

Эту информацию можно получить из массива frequency в моем примере. Число из массива - это количество повторений цифры. А цифра - это индекс этого числа. Т.е. если бы у цифры 0 было 5 повторений, у цифры 3 5 повторений а у всех других цифр 0 повторений, то массив выглядит как [5, 0, 0, 5, 0, 0, 0, 0, 0, 0] .

Я о прокрутке всего кода (функции), ( интерации), по клику на кнопку выполняется цикл for (пять раз)

С точки зрения исходного кода генерация строки и анализ в ней цифр - две не связанные задачи. Сначала пиши код который генерирует строку с числами, а потом запускай часть кода которую я дал что анализирует строку. Пытаться описать эти действия в одном цикле или вместе - необоснованное сильное усложнение.

А просто максимальное выявить из всего вашего массива?

Ты это можешь - найти максимальное число из массива. А потом найти индекс этого числа - индекс и будет цифрой которая встречается максимальное количество раз.

А можно код? Как-то так ? var largest2 = Math.max.apply(null, frequency); // выявляем макс. число

var m = document.getElementByIdjp(“m”);

m.innerHTML(largest2);
Но так не работает(

var arr = [11, 4, 3, 12, 33, 1, 45, 2, 18, 4]
var maxVal = arr[0]
var maxFigure = 0
for (var i = 0; i < arr.length; i++) {
	if (maxVal < arr[i]) {
		maxVal = arr[i]
		maxFigure = i
	}
}
alert(maxFigure + ' : ' + maxVal)

Максимальное из всей строки на скриншоте, вы меня недопоняли

Если ты возьмешь код решения из этого комментария и подставишь результат в var arr из этого комментария, то получишь цифру и максимальное количество (суммарное) ее появления в строке со скриншота.

var node = document.getElementById('final');

var inputString = node.textContent // получаем чисто строку текста без формтирования и тегов

var valuPairs = inputString.split(';') // получаем массив строк вида 3 : 16, плюс будут "мусорные" строки без пар цифр из-за последнего ;

// Это важный момент - с помощью массива мы моделируем, "кодируем" часть предметной области.

// на 0 месте будет количество повторений цифры 0, на 1 месте - количество повторений цифры 1 итд итд.

// позже мы будем увеличивать соответствующие количетва встречаний цифр

var frequency = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

// пробегаемся по valuPairs, преобразовываем строку с числом в число, суммируем количество повторений, не забываем про "мусорные" строки, которые просто не обрабатываем

for (var i = 0; i &lt; valuPairs.length; i++) {

var pairString = valuPairs[i].trim() // убираем пробелы из строк

if (pairString) { // отсекаем мусорные пустые строки

var values = pairString.split(':')

var digit = parseInt(values[0].trim()) // преобразовали цифру к числу

var occurances = parseInt(values[1].trim()) // преобразовали строку с количеством повторений к числу

frequency[digit] = frequency[digit] + occurances // инкрементируем значение в результирующем массиве

}

}

var maxVal = frequency[0]

var maxFigure = 0

for (var i = 0; i &lt; frequency.length; i++) {

if (maxVal &lt; frequency[i]) {

maxVal = frequency[i]

maxFigure = i

}

}

alert(maxFigure + ' : ' + maxVal)

Так?

Так ли?

Похоже на правду. Структурно верно. На практике может понадобиться что-то доделать/изменить