객체 길이를 얻는 방법 [중복]
이 질문에는 이미 답변이 있습니다.
- 자바 스크립트 객체의 길이 38 답변
객체의 길이를 반환 할 수있는 내장 함수가 있습니까?
예를 들어, 나는을 a = { 'a':1,'b':2,'c':3 }
반환해야합니다 3
. 내가 사용 a.length
하면 반환합니다 undefined
.
간단한 루프 함수 일 수 있지만 내장 함수가 있는지 알고 싶습니다.
관련 질문 ( JSON 객체의 길이 )이 있습니다-선택된 답변에서 사용자는 객체를 배열로 변환하는 것이 좋습니다.
Object.keys () 를 지원하는 브라우저의 경우 다음을 수행하면됩니다.
Object.keys(a).length;
그렇지 않으면 (특히 IE <9에서) 루프를 사용하여 객체를 직접 반복 할 수 있습니다 for (x in y)
.
var count = 0;
var i;
for (i in a) {
if (a.hasOwnProperty(i)) {
count++;
}
}
이것은 hasOwnProperty
객체 리터럴의 속성 만 계산하고 프로토 타입에서 "상속"하는 속성은 아닌지 확인하기위한 것입니다.
이것은해야합니다 :
Object.keys(a).length
그러나 Object.keys
IE8 이하, Opera 및 FF 3.6 이하에서는 지원되지 않습니다.
라이브 데모 : http://jsfiddle.net/simevidas/nN84h/
다음과 $.map()
같이 쉽게 수행 할 수 있습니다 .
var len = $.map(a, function(n, i) { return i; }).length;
underscore.js ( http://underscorejs.org/docs/underscore.html )를 살펴 보셨습니까 ? 유용한 방법이 많은 유틸리티 라이브러리입니다. size
toArray 메소드뿐만 아니라 콜렉션 메소드도 있으므로 필요한 것을 얻을 수 있습니다.
_.size({one : 1, two : 2, three : 3});
=> 3
모두 함께 요약하면 다음과 같은 범용 기능이 있습니다 (ie8 지원 포함).
var objSize = function(obj) {
var count = 0;
if (typeof obj == "object") {
if (Object.keys) {
count = Object.keys(obj).length;
} else if (window._) {
count = _.keys(obj).length;
} else if (window.$) {
count = $.map(obj, function() { return 1; }).length;
} else {
for (var key in obj) if (obj.hasOwnProperty(key)) count++;
}
}
return count;
};
document.write(objSize({ a: 1, b: 2, c: 3 }));
// 3
jQuery에서 나는 그런 식으로 만들었습니다.
len = function(obj) {
var L=0;
$.each(obj, function(i, elem) {
L++;
});
return L;
}
따라서 Object.keys 메서드를 찾아서 바꿀 필요가 없으며 스크립트 실행 초기에이 코드를 사용하는 것이 좋습니다.
if(!Object.keys)
{
Object.keys = function(obj)
{
return $.map(obj, function(v, k)
{
return k;
});
};
}
다음은 Innuendo의 대답에 대한 jQuery로 작성된 함수입니다.
$.extend({
keyCount : function(o) {
if(typeof o == "object") {
var i, count = 0;
for(i in o) {
if(o.hasOwnProperty(i)) {
count++;
}
}
return count;
} else {
return false;
}
}
});
다음과 같이 호출 할 수 있습니다
var cnt = $.keyCount({"foo" : "bar"}); //cnt = 1;
하나 더 답변 :
var j = '[{"uid":"1","name":"Bingo Boy", "profile_img":"funtimes.jpg"},{"uid":"2","name":"Johnny Apples", "profile_img":"badtime.jpg"}]';
obj = Object.keys(j).length;
console.log(obj)
여기에 오는 사람들을 위해 이미 jQuery 객체 인 항목 수를 찾으려면 :
.length는 찾고있는 것입니다.
예:
len = $('#divID').length;
alert(len);
새로운 의존성을 피하려면 자신 만의 스마트 한 객체를 만들 수 있습니다. 물론 더 많은 것을하고 싶을 때만 크기를 얻으십시오.
MyNeatObj = function (obj) {
var length = null;
this.size = function () {
if (length === null) {
length = 0;
for (var key in obj) length++;
}
return length;
}
}
var thingy = new MyNeatObj(originalObj);
thingy.size();
이 방법으로도 수행 할 수 있습니다.
Object.entries(obj).length
예를 들면 다음과 같습니다.
let obj = { a: 1, b: 2, };
console.log(Object.entries(obj).length); //=> 2
// Object.entries(obj) => [ [ 'a', 1 ], [ 'b', 2 ] ]
개체에 정의되지 않은 속성이있을 수 있습니다. 의 방법을 사용하면 Object.keys(data).length
해당 속성도 계산됩니다.
그것들을 걸러 내고 싶을 수도 있습니다.
Object.keys(data).filter((v) => {return data[v] !== undefined}).length
Lodash lib와 같은 것을 사용할 수 있으며 _.toLength (object)는 객체의 길이를 제공해야합니다
다른 이름 : 길이의 값 쌍을 추가하고 적절하게 증가 / 감소시킬 수 있습니다. 이렇게하면 길이를 쿼리해야 할 때마다 전체 객체 속성을 반복 할 필요가 없으며 특정 브라우저 나 라이브러리에 의존 할 필요가 없습니다. 물론 그것은 모두 당신의 목표에 달려 있습니다.
참고 URL : https://stackoverflow.com/questions/5533192/how-to-get-object-length
'IT' 카테고리의 다른 글
jQuery는 첫 번째를 제외한 모든 테이블 행을 삭제합니다. (0) | 2020.03.25 |
---|---|
Android에서 기본 활동으로 데이터 전송 (0) | 2020.03.25 |
데이터 테이블 : 정의되지 않은 'mData'속성을 읽을 수 없습니다 (0) | 2020.03.24 |
CSS 만 사용하여 div 위에 마우스를 올려 놓으십시오. (0) | 2020.03.24 |
안드로이드 앱에서 Toolbar.setTitle 메소드는 효과가 없습니다 – 어플리케이션 이름은 제목으로 표시됩니다 (0) | 2020.03.24 |