Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.01.2020, 22:31
Аспирант
Отправить личное сообщение для SolomonRei Посмотреть профиль Найти все сообщения от SolomonRei
 
Регистрация: 05.04.2018
Сообщений: 77

Undefined ошибка
Добрый вечер, имеется ряд функций для генерации объектов. все возвращается правильно, но в объекте появляется undefined непонятно, почему
function generateObjects(count, colors) {
	 	  if (count % 2 == 0) {
	      let i = 1, arr = []
	      while(i < count) {
	      	 let color = arrayRandElement(arr, colors);
	      	 console.log(color)
	      		arr.push({id:i, color: color, state: 'hidden'})
	      		arr.push({id:++i, color: color, state: 'hidden'})
	        i++
	      }
	      console.log(arr)
    	}
    }

    function arrayRandElement(arr, colors) {
	    let rand = Math.floor(Math.random() * colors.length);
	  	let count = checkElements(arr, colors[rand])

	  	if(count >= 2) {
	  		arrayRandElement(arr, colors)
	  		}else {
	  			console.log(rand, colors)
	  			return colors[rand];
	  		}
		}

		function checkElements(arr, color) {
			let count = 0;
			arr.forEach((i) => {
				if (i.color == color) count++
			})
			return count
		}
    generateObjects(6, ['red', 'blue', 'yellow'])

скрин приложил
Изображения:
Тип файла: jpg Screenshot_13.jpg (13.3 Кб, 1 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 09.01.2020, 22:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

SolomonRei,
цель генерации какая? какой нужен результат?
Ответить с цитированием
  #3 (permalink)  
Старый 09.01.2020, 22:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

SolomonRei,
может массив цветов перемешать, а не искать что уже выпало, а что нет?
Ответить с цитированием
  #4 (permalink)  
Старый 09.01.2020, 23:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

SolomonRei,
function generateObjects(colors) {
     let i = 1, arr = [];
     for(let color of arrayRandElement(colors)){
        arr.push({id:i, color: color, state: 'hidden'})
	    arr.push({id:++i, color: color, state: 'hidden'})
     }
    return arr
    }
function arrayRandElement(arr) {
        for(let i = 0; i <  arr.length; i++) {
            let rand = Math.floor(Math.random() * arr.length);
            [arr[i], arr[rand]] = [arr[rand], arr[i]];
        }
        return arr
}

console.log(generateObjects(['red', 'blue', 'yellow']))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка отправки с параметрами ошибка UNDEFINED jay-S Events/DOM/Window 4 15.11.2019 11:08
чистка массива от undefined со смещением Evelate Элементы интерфейса 4 20.07.2017 15:23
Фэнсибокс: ошибка loading is undefined l@pteff jQuery 1 19.03.2014 16:19
Ошибка Uncaught TypeError: Cannot read property 'elements' of undefined Allality Общие вопросы Javascript 14 29.07.2012 18:35
Область видимости внутри функций FiMko Общие вопросы Javascript 12 02.11.2010 03:01