IT TIP

객체의 객체 수를 계산하는 Javascript

itqueen 2020. 10. 15. 22:08
반응형

객체의 객체 수를 계산하는 Javascript


다음과 같은 개체가 있습니다.

Object {0=Object, 1=Object, 2=Object} // Output from console.log(obj.Data);

그러나 개체의 개체 수를 세고 마지막으로 하위 개체에서 속성 값을 가져올 수있는 방법은 없습니다.

나는 시도했다

console.log(obj.Data[0].length); // It does not work

console.log(obj.Data.length); // It does not work

이것은 나를 위해 약간 까다 롭습니다. 여러분이 도울 수 있기를 바랍니다.


이 작업을 수행하는 가장 쉬운 방법은 우수한 성능과 이전 브라우저와 새 브라우저 모두와의 호환성으로 페이지에 Lo-Dash 또는 Underscore 를 포함하는 것입니다.

그런 다음 _.size(object)또는_.keys(object).length

의 경우 다음을 사용하여 obj.Data테스트 할 수 있습니다.

console.log( _.size(obj.Data) );

또는:

console.log( _.keys(obj.Data).length );

Lo-Dash와 Underscore는 모두 훌륭한 라이브러리입니다. 코드에서 매우 유용 할 것입니다. (그들은 서로 다소 유사합니다. Lo-Dash는 몇 가지 장점이있는 최신 버전입니다.)

또는 코드에이 함수를 포함하여 객체의 속성을 반복하고 계산할 수 있습니다.

function ObjectLength( object ) {
    var length = 0;
    for( var key in object ) {
        if( object.hasOwnProperty(key) ) {
            ++length;
        }
    }
    return length;
};

다음과 같이 테스트 할 수 있습니다.

console.log( ObjectLength(obj.Data) );

하지만이 코드는 최신 브라우저 에서처럼 빠르지는 않습니다. 최신 브라우저에서는 훨씬 빠르며 이전 브라우저에서도 작동하는 버전의 경우 다음을 사용할 수 있습니다.

function ObjectLength_Modern( object ) {
    return Object.keys(object).length;
}

function ObjectLength_Legacy( object ) {
    var length = 0;
    for( var key in object ) {
        if( object.hasOwnProperty(key) ) {
            ++length;
        }
    }
    return length;
}

var ObjectLength =
    Object.keys ? ObjectLength_Modern : ObjectLength_Legacy;

이전과 마찬가지로 다음을 사용하여 테스트하십시오.

console.log( ObjectLength(obj.Data) );

이 코드는 Object.keys(object).length최신 브라우저에서 사용 되며 이전 브라우저에 대한 루프 계산으로 돌아갑니다.

그러나이 모든 작업을 수행하려는 경우 대신 Lo-Dash 또는 Underscore를 사용하고 해당 라이브러리가 제공하는 모든 이점을 얻을 것을 권장합니다.

I set up a jsPerf that compares the speed of these various approaches. Please run it in any browsers you have handy to add to the tests.

Thanks to Barmar for suggesting Object.keys for newer browsers in his answer.


In recent browsers you can use:

Object.keys(obj.Data).length

See MDN

For older browsers, use the for-in loop in Michael Geary's answer.


Try Demo Here

var list ={}; var count= Object.keys(list).length;

참고URL : https://stackoverflow.com/questions/16976904/javascript-counting-number-of-objects-in-object

반응형