Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.05.2019, 13:36
Аватар для NeonMan
Кандидат Javascript-наук
Отправить личное сообщение для NeonMan Посмотреть профиль Найти все сообщения от NeonMan
 
Регистрация: 22.07.2018
Сообщений: 112

Смена значения propName
Подскажите такой момент, есть поле из 10 кнопок.

С интервалом в 2 секунды загорается одна из кнопок синим цветом
const id = Math.floor(Math.random()*10) + 1;
onToggleColor(state.buttons, id, 'blue')

const onToggleColor = (data, id, propName) => {
 return data.map((item) => {
    if (item.id !== id) {
    	return item
    }
    return {
      ...item,
      [propName]: !item[propName]
    }
  })
};


Как сделать, что бы если рандомное число выпавшее уже на кнопку(число = id), которая горит синими, не меняла ее propName на противоположный, а оставляло его таким как есть, а вместо этого генерировало следующее число, где propName еще не менялся, а то в этом случае если кнопка горит уже синим, и снова рандом попадает на этот id он меняет обратно на белый цвет, а нужно что б не менял, а менял только тот, который еще не окрасился
Ответить с цитированием
  #2 (permalink)  
Старый 26.05.2019, 13:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,157

NeonMan,
может сделать массив id и выбирать/удаляя из массива?
Ответить с цитированием
  #3 (permalink)  
Старый 26.05.2019, 14:23
Аватар для NeonMan
Кандидат Javascript-наук
Отправить личное сообщение для NeonMan Посмотреть профиль Найти все сообщения от NeonMan
 
Регистрация: 22.07.2018
Сообщений: 112

Сообщение от рони Посмотреть сообщение
NeonMan,
может сделать массив id и выбирать/удаляя из массива?
Так и есть, state.buttons - это массив, в котором объекты, и в этих объектах я меняю propName
arr: [
  {
   id: 1,
   blue: false (propName)
 }
]
Ответить с цитированием
  #4 (permalink)  
Старый 26.05.2019, 14:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,157

NeonMan,
let arr = [0,1,2,3...10];
if(arr.length) {
   let id = Math.floor(Math.random()*arr.length);
id = arr.splice(id, 1, 0)[0];
}
Ответить с цитированием
  #5 (permalink)  
Старый 26.05.2019, 15:03
Аватар для NeonMan
Кандидат Javascript-наук
Отправить личное сообщение для NeonMan Посмотреть профиль Найти все сообщения от NeonMan
 
Регистрация: 22.07.2018
Сообщений: 112

ok, спасибо

Последний раз редактировалось NeonMan, 26.05.2019 в 15:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена значения переменной от ширины экрана Mikael86 Общие вопросы Javascript 4 01.02.2018 19:27
Почему возвращает значения RGB каналов? Black_Star jQuery 14 06.02.2017 04:49
Input type="time" + JS +Safari (iPhone) dpts Opera, Safari и др. 0 21.09.2016 08:24
Input type="time" + JS +Safari (iPhone) dpts Opera, Safari и др. 0 21.09.2016 08:24
Смена значения phantom2014 Общие вопросы Javascript 5 11.02.2014 08:11