IT

객체 길이를 얻는 방법

lottoking 2020. 3. 24. 08:16
반응형

객체 길이를 얻는 방법 [중복]


이 질문에는 이미 답변이 있습니다.

객체의 길이를 반환 할 수있는 내장 함수가 있습니까?

예를 들어, 나는을 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.keysIE8 이하, 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 )를 살펴 보셨습니까 ? 유용한 방법이 많은 유틸리티 라이브러리입니다. sizetoArray 메소드뿐만 아니라 콜렉션 메소드도 있으므로 필요한 것을 얻을 수 있습니다.

_.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

반응형