2013-12-23 2 views
0

배열을 객체로 바꾸는 함수를 작성했습니다. n 배열 값은 객체의 값이 true 인 속성입니다.배열을 객체로 변환하고 객체 프라퍼티를 자바 스크립트의 배열 값으로 설정합니다.

내 코드에서 첫 번째 부분은 예상대로 작동합니다. 배열 값의 속성을 가진 객체를 만들고 객체 값을 true로 설정합니다. 내 두 번째 코드 예제에서는 특정 개체 속성이 true가 아닌 다른 값을 갖는 경우 조금 더 발전 시키려고합니다. 나는이 일을하는 방법에 붙어있다.

var myArray = ['mike', 'jenn', 'fred', 'jonny', 'frank']; 

var myFunc = function (array) { 
    var myObj = {}; 
    for (var i = 0; i < array.length; i += 1) { 
     myObj[array[i]] = true; 
    } 
    return myObj; 
}; 


var myFunc = function (array) { 
    var myObj = {}; 
    for (var i = 0; i < array.length; i += 1) { 
     if (array[i] = 'jenn') { 
     myObj[array[i]] = 'is awesome'; 
     } else if (array[i] = 'mike') { 
     myObj[array[i]] = 'is a rookie'; 
     } else { 
     myObj[array[i]] = 'help'; 
     } 
    } 
    return myObj; 
}; 
+0

의 자바 스크립트는 값을 할당하는 데 사용되며 '=='는 값을 비교하는 데 사용되고'=== '는 값과 유형을 비교하는 데 사용됩니다. 나는 하나의'='를 사용하여 값을 할당 한 코드입니다. 비교를 위해'=='또는'==='를 사용해야합니다. –

답변

2

비교 연산자 대신 할당 연산자를 사용하고 있습니다. 당신은 ===은 언어의 대부분처럼, 대신 ==의 사용 이유가 궁금 할 것이다, 지금이

if (array[i] === 'jenn') { 
... 
} else if (array[i] === 'mike') { 
... 

같은 문제를 해결할 수 있습니다. 이유는 type type 강제 변환입니다. 비교되는 데이터 유형이 다른 경우에도 ==은 둘 중 하나를 다른 유형으로 변환하려고 시도하고 결과를 생성합니다. 그러나 이것은 대부분의 경우에 바람직하지 않습니다.

반면에 변수 유형이 동일하고 값도 일치하는 경우에만 ===이 표현식을 true으로 평가합니다.

따라서 항상 ===을 사용하는 것이 좋습니다.

+0

ur awesome, 내가 그 일을하고 있었지만 늦었어야합니다. 내가 그것을 바꿨어 오타가 있었으므로 지금은 그것을 작동;) – jstone

+0

@ jstone 당신은 환영합니다 :) 당신이 도움이된다면이 답변을 수락 고려하십시오 :) – thefourtheye

관련 문제