13.12.2021, 20:00
|
Интересующийся
|
|
Регистрация: 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);
}
}
}
}
|
|
13.12.2021, 20:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
Boyenerji,
не генерируйте числа, перемешайте массив и будет 15 уникальных значений.
|
|
13.12.2021, 20:48
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Не совсем понятна задача и цель.
Нужно, что бы у каждого объекта Symbols поле count было уникальным?
Тогда надо при создании присваивать уникальное значение.
|
|
13.12.2021, 20:59
|
Интересующийся
|
|
Регистрация: 07.10.2020
Сообщений: 11
|
|
Всё верно. А как это сделать?
|
|
13.12.2021, 21:04
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
уникальные номера
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>
|
|
13.12.2021, 21:06
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Я бы все это так сделал
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.
|
|
|
|