2014-09-04 2 views
0

배열에서 JSON 개체를 만드는 백본 응용 프로그램에 구문 분석 메서드가 있지만 값이 비어 있으면 정의되지 않은 것으로 작성되어 다른 메서드의 동작을 중단합니다. 정의되지 않은 값을 빈 문자열로 설정해야하고 문제가 발생하면 도움을 주시면 대단히 감사하겠습니다.빈 문자열로 정의되지 않은 값 바꾸기

참고 :이 경우에 나는 값의 값을 설정하려고 : OBJ [키] 정의되지 않은 = 경우 빈 문자열로

코드 :

parse: function(data){ 
    return data.map(function(obj){ 
     var key = Object.keys(obj)[0]; 
     return { 
     attribute: key, 
     value: obj[key] 
     }; 
    }); 
} 

toQueryString: function(){ 
    var obj = this.toQueryData(), 
    qs = []; 
    for (key in obj) { 
    qs.push(key + "=" + obj[key]); 
    } 
    return qs.join('&') 
}, 
toQueryData: function(){ 
    return this.reduce(function(memo, model){ 
    memo[model.get('attribute')] = model.get('value'); 
    return memo 
    }, {}); 
} 

답변

1

개체에 속성 키가 있는지 확인해야합니다.

value: obj.hasOwnProperty(key) && obj[key] != undefined ? obj[key] : "" 

// 또는 당신은 (내가 선호 브래킷 구문이 조금 못 생겼다고 생각하는) 이런 식으로 쓸 수 :

value: obj.hasOwnProperty(key) && obj.key != undefined ? obj.key : "" 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

+0

흠, 시도해 보았지만 정의되지 않은 값을 값으로 할당하고 있습니다 : –

+1

이제는 정의되지 않은 값도 확인합니다. – marko

2

사용 삼항 조건 :

value: obj[key] ? obj[key] : "" 

또는

(@Derek 朕 會 功夫에 의해 지적은)
value: obj[key] || "" 
,369
+1

또는 이와 유사하게'obj [key] || ""' –

+0

@Derek 朕 會 功夫 - 네 - Idk 왜,하지만 난 항상이 상황에서'||'를 잊어 버립니다. – tymeJV

+0

답을 시도한 후에 제 질문을 편집했습니다. 여전히 정의되지 않은 값이 나타납니다. –

1

당신이 할 수 귀하의 사용 백본 이후 밑줄 사용 방법 :

return _.defaults({attribute: key, value: obj[key]}, {value: ''}); 
0
toQueryString: function(){ 
    var obj = this.toQueryData(), 
    qs = []; 
    for (key in obj) { 
    qs.push(key + "=" + (obj.hasOwnProperty(key) && obj.key != undefined ? obj.key : "")); 
    } 
    return qs.join('&') 
} 

이것은 결국 해결책이었습니다. 감사합니다. Marko!

관련 문제