>  기사  >  웹 프론트엔드  >  jQuery는 객체의 길이를 어떻게 얻고 계산합니까?

jQuery는 객체의 길이를 어떻게 얻고 계산합니까?

伊谢尔伦
伊谢尔伦원래의
2017-06-17 13:26:044098검색

우리의 일상적인 개발에서 객체는 매우 자주 사용됩니다. 배열의 길이를 계산하는 것은 매우 편리합니다. 그런데 객체의 길이를 계산하는 방법은 무엇입니까? 다음과 같이 일련의 책과 작가가 포함된 도서관 프로젝트가 있다고 가정합니다.

var bookAuthors = {
    "Farmer Giles of Ham": "J.R.R. Tolkien",
    "Out of the Silent Planet": "C.S. Lewis",
    "The Place of the Lion": "Charles Williams",
    "Poetic Diction": "Owen Barfield"
};

현재 요구 사항을 분석하고 데이터를 API로 보내지만 책의 길이는 100권을 초과할 수 없으므로 데이터를 보내기 전 개체에 포함된 총 책 수입니다. 그럼 우리는 항상 무엇을 합니까? 이렇게 할 수도 있습니다:

function countProperties (obj) {
    var count = 0;
    for (var property in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, property)) {
            count++;
        }
    }
    return count;
}
var bookCount = countProperties(bookAuthors);
// Outputs: 4
console.log(bookCount);

가능합니다. 다행히도 Javascript에서는 객체의 길이를 계산하는 수정된 메소드를 제공합니다.

var bookAuthors = {
    "Farmer Giles of Ham": "J.R.R. Tolkien",
    "Out of the Silent Planet": "C.S. Lewis",
    "The Place of the Lion": "Charles Williams",
    "Poetic Diction": "Owen Barfield"
};
var arr = Object.keys(bookAuthors);
//Outputs: Array [ "Farmer Giles of Ham", "Out of the Silent Planet", "The Place of the Lion", "Poetic Diction" ]
console.log(arr);
//Outputs: 4
console.log(arr.length);

배열에 keys 메소드를 사용해 보겠습니다.

var arr = ["zuojj", "benjamin", "www.zuojj.com"];
//Outputs: ["0", "1", "2"] 
console.log(Object.keys(arr));
//Outputs: 3
console.log(arr.length);

Object.keys( ) 메소드는 주어진 객체의 모든 열거 가능한 자체 속성의 속성 이름으로 구성된 배열을 반환합니다. 배열의 속성 이름 순서는 객체를 탐색하기 위해 for-in 루프를 사용할 때 반환되는 순서와 일치합니다. 둘 사이의 주요 차이점은 for-in이 객체가 프로토타입 체인에서 상속하는 열거 가능한 속성도 탐색한다는 것입니다. JavaScript에서 객체의 길이를 알아보세요:

/**
 *  jQuery 扩展方法
 *
 *      $.Object.count( p )
 *          获取一个对象的长度,需要指定上下文,通过 call/apply 调用
 *          示例: $.Object.count.call( obj, true );
 *          @param  {p}             是否跳过 null / undefined / 空值
 *
 */
$.extend({
    //  获取对象的长度,需要指定上下文 this
    Object:     {
        count: function( p ) {
            p = p || false;
         
            return $.map( this, function(o) {
                if( !p ) return o;
                 
                return true;
            } ).length;
        }
    }
});
 
 
//  示例
//  ---------------------------------------------------------------------------
var obj = {
    a:      null,
    b:      undefined,
    c:      1,
    d:      2,
    e:      'test'
};
 
//  不过滤空值
console.log( $.Object.count.call( obj ) );
 
//  过滤空值
console.log( $.Object.count.call( obj, true ) );

위 내용은 jQuery는 객체의 길이를 어떻게 얻고 계산합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.