2015-01-11 1 views
1

에 해당 밑줄 객체의 다음과 같은 배열을 가지고 :JQuery와 또는 자바 스크립트의 hasOwnProperty

var array = [ 
{ 
    name: 'joe', 
    job: 'jack in the box', 
    age: 28, 
}, 
{ 
    name: 'john', 
    job: 'mcdonalds', 
    age: 34, 
}, 
{ 
    name: 'frank', 
    job: 'wendys', 
} 
]; 

내가 모두 자바 스크립트의 연령의 평균을 찾아 밑줄을 썼다 기능을 가지고있다. 그러나 먼저 함수에 "age"속성이 없으면 함수에 들어가기 전에 그 나이를 0으로 지정해야합니다. 그렇지 않으면 NaN이 생깁니다. 나는 자바 스크립트, 그리고 작동하는지 어떻게

그래서, 여기에 있습니다 :

for (var i = 0; i < array.length; i++) { 
    if (!array[i].hasOwnProperty('age')) { 
     array[i].age = 0; 
    } 
}; 

을 지금, 나는 같은 일을하려고하지만 jQuery를하고 밑줄을 사용하고 있습니다.

밑줄의 inArray()를 사용해 보았습니다.하지만이 방법은 인덱스가 배열에 있는지를 확인하는 것으로 보이며,이 경우에는 개체 내에 속성이 있는지, 즉 인덱스인지를 확인해야합니다. 배열의.

** 참고 : 나는 이것에 익숙하지 않고 배우려고 노력하지만, 완전한 대답을 제공하지 말고, 대신 스스로 연구 할 수있는 방법에 대한 개념이나 참조를 제공하십시오. 그에 대한 간단한 래퍼 필요가 없기 때문에

감사합니다 !! **

+4

당신이 정말 이해가되지 않습니다하려고 노력하고 뭐라고. JQuery 나 Underscore는 네이티브 JavaScript 런타임이 이미'.hasOwnProperty()'를 제공하기 때문에 그렇게 할 수 없다. – Pointy

+1

'! array [i] .hasOwnProperty ('age')'또는'! array [i] .age' 만 말할 수있을 때 왜 누군가가'jquery'를 사용하고 싶은지 모르겠습니다. – Mritunjay

+1

바닐라 JS도 ['Object.keys()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) 메소드를 가지고 있습니다. 캐시 될 때, 그것은 아마도 (적어도 일부 브라우저에서는 매우 느린) hasOwnProperty보다 빠릅니다. – Teemu

답변

2

hasOwnProperty 바닐라 JS에서 가능하며, 아름다운, JQueryunderscore는 구현이 없을 수 있습니다.

3

사용 _.has 당신이 hasOwnProperty에 대한 안전 기준이 필요합니다

if (!_.has(array[i], 'age')) { 
+3

먼저 Underscore 문서를 확인해야합니다. – Pointy

+0

@zzzzBov 응답을 보내 주셔서 감사합니다. _이 정의되지 않았다는 오류가 발생했습니다. 즉,이 링크가 밑줄에 대한 소스가 될 HTML 문서의 머리 부분에 링크를 넣어야한다고 가정합니다. 링크를 얻을 수있는 위치를 알고 있습니까? 나는 어디에서든지 그것을 찾아내는 것을 수색한다, 감사한다! – Brandon

+0

'' – surajck