Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Смена значения propName (https://javascript.ru/forum/events/77605-smena-znacheniya-propname.html)

NeonMan 26.05.2019 13:36

Смена значения 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 он меняет обратно на белый цвет, а нужно что б не менял, а менял только тот, который еще не окрасился

рони 26.05.2019 13:44

NeonMan,
может сделать массив id и выбирать/удаляя из массива?

NeonMan 26.05.2019 14:23

Цитата:

Сообщение от рони (Сообщение 508349)
NeonMan,
может сделать массив id и выбирать/удаляя из массива?

Так и есть, state.buttons - это массив, в котором объекты, и в этих объектах я меняю propName
arr: [
  {
   id: 1,
   blue: false (propName)
 }
]

рони 26.05.2019 14:42

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];
}

NeonMan 26.05.2019 15:03

ok, спасибо


Часовой пояс GMT +3, время: 13:44.