Помогите найти одинаковые значения
Помогите найти повторяющиеся значения в массиве и изменить их так, что бы в массиве остались только уникальные значения. Неделю голову ломаю, хватило мозгов только на это :D Он изменяет значения, но они все равно повторяются.
class Symbols { constructor(name, count, see) { this.name = name; this.count = count; this.see = see; } } const hotDog = new Symbols('🌭', randomInteger(1, 15), true), poganka = new Symbols('🍄', randomInteger(1, 15), true), hallowen = new Symbols('🎃', randomInteger(1, 15), true), home = new Symbols('🏠', randomInteger(1, 15), true), konfeta = new Symbols('🍭', randomInteger(1, 15), true), sun = new Symbols('🌞', randomInteger(1, 15), true); let arrSimvols = [hotDog, poganka, hallowen, home, konfeta, sun]; for (let a = 0; a < arrSimvols.length; a++) { for (let c = a + 1; c < arrSimvols.length; c++) { if (arrSimvols[a].count == arrSimvols[c].count) { while (arrSimvols[a].count == arrSimvols[c].count) { arrSimvols[a].count = randomInteger(1, 15); arrSimvols[c].count = randomInteger(1, 15); } } } } |
Boyenerji,
не генерируйте числа, перемешайте массив и будет 15 уникальных значений. |
Один из вариантов "перемешивания" массива...
https://learn.javascript.ru/task/shuffle |
Не совсем понятна задача и цель.
Нужно, что бы у каждого объекта Symbols поле count было уникальным? Тогда надо при создании присваивать уникальное значение. |
Всё верно. А как это сделать?
|
уникальные номера
Boyenerji,
<pre> <script> class Symbols { constructor(name, count, see) { this.name = name; this.count = count; this.see = see; } } function randomInteger(min, max) { let length = max - min + 1; let arr = Array.from({length}, (_, i) => min + i); function shuffle() { arr.forEach((_, i) => { let a = Math.trunc(Math.random() * length); [arr[i], arr[a]] = [arr[a], arr[i]]; }) return arr.slice(0) } let temp = shuffle(); return _ => { temp.length || (temp = shuffle()); return arr.pop() } } const count = randomInteger(1, 15); const hotDog = new Symbols('????', count(), true), poganka = new Symbols('????', count(), true), hallowen = new Symbols('????', count(), true), home = new Symbols('????', count(), true), konfeta = new Symbols('????', count(), true), sun = new Symbols('????', count(), true); let arrSimvols = [hotDog, poganka, hallowen, home, konfeta, sun]; document.write(JSON.stringify(arrSimvols, "", 1)) </script></pre> |
Я бы все это так сделал
class Symbols { static nCount =1; name = ''; count = Symbols.nCount ++; see; constructor(name, see = true) { this.name = name; this.see = see; } } const hotDog = new Symbols('������'), poganka = new Symbols('������'), hallowen = new Symbols('������'), home = new Symbols('������'), konfeta = new Symbols('������'), sun = new Symbols('������'); let arrSimvols = [hotDog, poganka, hallowen, home, konfeta, sun]; Ну есть другой вариант генерации уникальных значений - но весь вопрос как потом это поле используется и для чего. Почему при каждом редактировании эти картинки превращаются хрен знает во что, я догадываюсь, но не понимаю, зачем так редактор форума сделан. |
Часовой пояс GMT +3, время: 07:44. |