Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Undefined ошибка (https://javascript.ru/forum/dom-window/79226-undefined-oshibka.html)

SolomonRei 09.01.2020 22:31

Undefined ошибка
 
Вложений: 1
Добрый вечер, имеется ряд функций для генерации объектов. все возвращается правильно, но в объекте появляется 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'])

скрин приложил

рони 09.01.2020 22:45

SolomonRei,
цель генерации какая? какой нужен результат?

рони 09.01.2020 22:56

SolomonRei,
может массив цветов перемешать, а не искать что уже выпало, а что нет?

рони 09.01.2020 23:10

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']))


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