Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2021, 20:00
Интересующийся
Отправить личное сообщение для Boyenerji Посмотреть профиль Найти все сообщения от Boyenerji
 
Регистрация: 07.10.2020
Сообщений: 11

Помогите найти одинаковые значения
Помогите найти повторяющиеся значения в массиве и изменить их так, что бы в массиве остались только уникальные значения. Неделю голову ломаю, хватило мозгов только на это Он изменяет значения, но они все равно повторяются.

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);
            }
        }
    }
}
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2021, 20:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Boyenerji,
не генерируйте числа, перемешайте массив и будет 15 уникальных значений.
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2021, 20:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Один из вариантов "перемешивания" массива...
https://learn.javascript.ru/task/shuffle
Ответить с цитированием
  #4 (permalink)  
Старый 13.12.2021, 20:48
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

Не совсем понятна задача и цель.
Нужно, что бы у каждого объекта Symbols поле count было уникальным?
Тогда надо при создании присваивать уникальное значение.
Ответить с цитированием
  #5 (permalink)  
Старый 13.12.2021, 20:59
Интересующийся
Отправить личное сообщение для Boyenerji Посмотреть профиль Найти все сообщения от Boyenerji
 
Регистрация: 07.10.2020
Сообщений: 11

Всё верно. А как это сделать?
Ответить с цитированием
  #6 (permalink)  
Старый 13.12.2021, 21:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

уникальные номера
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>
Ответить с цитированием
  #7 (permalink)  
Старый 13.12.2021, 21:06
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

Я бы все это так сделал
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];


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

Последний раз редактировалось voraa, 13.12.2021 в 21:13.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти библиотеку rostovOnDon jQuery 1 05.07.2015 15:33
Помогите найти ошибку в вёрстке OlegALL (X)HTML/CSS 1 03.02.2014 11:58
Помогите найти скрипт Demoni Общие вопросы Javascript 6 30.08.2011 13:12
Ищю javascript которые немогу найти...и есть такие вообще?...помогите найти... rashid86 Общие вопросы Javascript 4 08.03.2010 20:22
Помогите найти видео vinnie Общие вопросы Javascript 0 02.03.2010 00:16