2016-06-07 1 views
0

그래서이 함수에 뭔가있는 것이 있으면 객체 정보를 뱉어 내고 싶습니다. 그러나 나는 붙어있다. 문제가 무엇인지 누구나 알고 있습니까?함수가 작동하지 않고 왜 그럴 수 없는지 알 수 없습니다.

function ifExist(property) { 
    if (randomObj.property === "") { 
     message += ""; 
    } else { 
     message += "<span class='propString'>" + randomObj.property + "</p>"; 
    } 
    return message; 
} 

ifExist(citation); 
ifExist(year); 

미리 감사드립니다!

+0

당신이 인덱서뿐만 아니라 문자열을 사용합니다. –

답변

2

변경 키 참조에 대괄호 표기법을 사용하십시오. randomObj[property] 동적 속성 이름을 사용하여 개체의 키에서 값을 가져와야합니다.

randomObj.property (점 표기)을 사용하면 randomObjectproperty이라는 키가 있습니다.

또한, 문자열로에 열쇠를 통과해야합니다 :

이상 Flôwz에서 언급 한 바와 같이
ifExist("citation"); 
ifExist("year"); 

, 어떤 데이터를 처리하기 전에 키가 개체에 있는지 확인하는 현명한 생각도 있어요 당신은 보장 할 수 없습니다.

+0

배열 객체로 작업하고 있다고 말하면 어떤 차이가 있습니까? –

+0

이 어레이의 예를 들어 주시겠습니까? 배열과 키/값 객체를 사용하는 경우 원하는 값을 찾는 방법을 약간 변경해야합니다. 관련 링크 : http://stackoverflow.com/questions/8067590/associative-array-versus-object-in-javascript –

+0

VAR 사람들 = [ {이름 : "존", LASTNAME "핸콕"}, { 이름 : "Peter", 성 : "Parker"} ]; –

1

시도 : 속성이 특정 객체에 전혀 존재하지 않는 여부는 따라 null 또는 빈 ("") 또는 undefined 또는 false 또는 0 같습니다 :

function ifExists(obj, property) { 
    return obj.hasOwnProperty(property); 
} 

var obj = { myprop: 'I got this.' }; 
console.log(ifExists(obj, 'myprop')); // also notice quotes. 
0

먼저 확인하려는 것을 결정해야 그것의 유형에.

첫 번째 경우는 object.hasOwnProperty(property)입니다. 다른 모든 경우에 대한 (당신이 알고있는 경우 속성이 존재) : 태그 속성 안에 더 나은

if (!object[property]){ 
    //... 
} 

는 작은 따옴표를 사용하지.

var message += '<span class="propString">'; 

또는 당신은 그것을 벗어날 수 있습니다 : 올바른 방법은

var message += "<span class=\"propString\">"; 
관련 문제