2017-05-13 3 views
0

저는 자바 스크립트를 처음 접하는 분입니다. 무작위로 객체의 항목을 선택하는 코드가 있습니다. 이제 생성의 첫 번째 라운드에서 선택한 이름을 공유하는 객체에서 무작위로 항목을 선택하고 싶습니다. 선택기에서 변수 이름을 사용하는 방법을 잘 모르겠습니다. 변수 이름 자체가 가변적 인 경우 특히 그렇습니다.변수 이름을 사용하여 검색 할 배열/객체를 자바 스크립트 및 jQuery로 선택하십시오.

지금 피자 첫 선택. 옵션에 대해 "정의되지 않음"이 표시됩니다. 나는 "여분의 소시지", "여분의 페퍼 로니"등을 "고기 덮밥"이 "pizzaStyles"와 "여분의 버섯", "여분의 양파"등에서 추출 된 경우 .option으로 가져 가고 싶습니다. "veggielover "는"pizzaStyles "에서 선택됩니다. 코드가 성공적으로 .size 및 .style을 생성하고 표시합니다.

나는 이것을 설명 할 때 끔찍한 일을하고있는 것처럼 느껴지지만, 코드를 보면 내가 무엇을하고 있는지 알 수 있기를 바랍니다.

function generate() { 

var pizzaFirstChoice = { 
size: "", 
style: "", 
option: "", 
}; 

var pizzaSizes = [ 
"small", 
"medium", 
"large", 
]; 

var pizzaStyles = [ 
"meatlover", 
"veggielover", 
]; 

var meatlover = [ 
"extra sausage", 
"extra pepperoni", 
"extra bacon", 
]; 

var veggielover = [ 
"extra mushroom", 
"extra onion", 
"extra bell pepper", 
]; 

pizzaFirstChoice.size = pizzaSizes[Math.floor(Math.random()*pizzaSizes.length)]; 
pizzaFirstChoice.style = pizzaStyles[Math.floor(Math.random()*pizzaStyles.length)]; 
pizzaFirstChoice.option = pizzaFirstChoice.style[Math.floor(Math.random()*pizzaFirstChoice.style)]; 

var pizza = $("#result").html("His first choice of pizza is a " + pizzaFirstChoice.size + " " + pizzaFirstChoice.style + " with " + pizzaFirstChoice.option + "."); 

} 
+0

'pizzaFirstChoice.style', 네 문자열입니다? 'pizzaFirstChoice.style'는'meatlover' 배열의 요소를 선택하는 데 어떻게 사용해야합니까? – guest271314

+0

예. 나는 변수 문자열을 선택자로 사용하는 방법을 찾고 있다고 생각한다. 내가 정확하게 말하고 있는지 나는 모른다. –

답변

0

당신은 객체의 속성으로 meatloverveggielover를 정의 할 수 있습니다; 대괄호 표기법을 사용하여 객체의 특성으로 pizzaFirstChoice.style을 참조하고 인접한 오른쪽에 [Math.floor(Math.random() * pizzaOptions[pizzaFirstChoice.style].length)]을 추가하여 선택한 배열의 .length을 참조하십시오.

+0

정말 고마워요! 이것이 제가 찾고 있던 것입니다. 선택기의 일부로 하나의 변수를 포함하는 방법을 알지 못했습니다. 피자 선택 후 괄호 안에 변수를 사용했습니다. –

0

하면 .. 그쪽 제 2 줘야 각 pizzaFirstChoice 후 입력 CONSOLE.LOG을 볼 경우

function generate() { 
 

 
    var pizzaFirstChoice = { 
 
    size: "", 
 
    style: "", 
 
    option: "", 
 
    }; 
 

 
    var pizzaSizes = [ 
 
    "small", 
 
    "medium", 
 
    "large", 
 
    ]; 
 

 
    var pizzaStyles = [ 
 
    "meatlover", 
 
    "veggielover", 
 
    ]; 
 
    // define `meatlover`, `veggielover` arrays as properties of an object 
 
    var pizzaOptions = { 
 
    meatlover: [ 
 
     "extra sausage", 
 
     "extra pepperoni", 
 
     "extra bacon", 
 
     ] 
 
    , veggielover: [ 
 
     "extra mushroom", 
 
     "extra onion", 
 
     "extra bell pepper", 
 
    ] 
 
    }; 
 

 
    pizzaFirstChoice.size = pizzaSizes[Math.floor(Math.random() * pizzaSizes.length)]; 
 
    pizzaFirstChoice.style = pizzaStyles[Math.floor(Math.random() * pizzaStyles.length)]; 
 
    pizzaFirstChoice.option = pizzaOptions[pizzaFirstChoice.style][Math.floor(Math.random() * pizzaOptions[pizzaFirstChoice.style].length)]; 
 

 
    var pizza = $("#result").html("His first choice of pizza is a " + pizzaFirstChoice.size + " " + pizzaFirstChoice.style + " with " + pizzaFirstChoice.option + "."); 
 

 
} 
 

 
generate();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="result"></div>

당신에게 대답 할 : 중간 veggielover, 세번째는 정의한다. 그러나 문자열 pizzaFirstChoice.style에 Math.random()을 곱하고 있습니다. 물론 정의되지 않습니다. 질문은 무엇이 pizzaFirstChoice.option이 되길 원하는지와 동일합니다. 같은 방식으로 미트 오버 및 채식 애호가를위한 배열 길이를 쿼리 할 수 ​​있습니다 : pizzaFirstChoice.option = meatlover [Math.random() * meatlover.length)]; 또는 pizzaFirstChoice.option = 채식주의 자 [Math.random() * veggielover.length)];

나는 당신이 옳은 것을 얻는다 고 생각합니다. 아니라면 -

0

을 시도해보십시오 원하는 출력은 무엇인가 설명해주십시오 조건 :

function generate() { 

var pizzaFirstChoice = { 
size: "", 
style: "", 
option: "", 
}; 

var pizzaSizes = [ 
"small", 
"medium", 
"large", 
]; 

var pizzaStyles = [ 
"meatlover", 
"veggielover", 
]; 

var meatlover = [ 
"extra sausage", 
"extra pepperoni", 
"extra bacon", 
]; 

var veggielover = [ 
"extra mushroom", 
"extra onion", 
"extra bell pepper", 
]; 

pizzaFirstChoice.size = pizzaSizes[Math.floor(Math.random()*pizzaSizes.length)]; 
pizzaFirstChoice.style = pizzaStyles[Math.floor(Math.random()*pizzaStyles.length)]; 

if (pizzaFirstChoice.style == 'meatlover') { 
    pizzaFirstChoice.option = meatlover[Math.floor(Math.random()*meatlover.length)]; 
} else if (pizzaFirstChoice.style == 'veggielover') { 
    pizzaFirstChoice.option = veggielover[Math.floor(Math.random()*veggielover.length)]; 
} 

$("#result").html("His first choice of pizza is a " + pizzaFirstChoice.size + " " + pizzaFirstChoice.style + " with " + pizzaFirstChoice.option + "."); 
}