ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery はオブジェクトの長さをどのように取得して計算しますか?

jQuery はオブジェクトの長さをどのように取得して計算しますか?

伊谢尔伦
伊谢尔伦オリジナル
2017-06-17 13:26:044138ブラウズ

日常の開発ではオブジェクトが非常に頻繁に使用されますが、配列の長さを計算するのは非常に便利ですが、オブジェクトの長さはどのように計算するのでしょうか?次のような書籍と著者のセットを含む図書館プロジェクトがあるとします。

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);

The Object.keys( ) メソッドは、指定されたオブジェクトの列挙可能なすべての自己プロパティのプロパティ名で構成される配列を返します。配列内のプロパティ名の順序は、for-in ループを使用してオブジェクトを走査するときに返される順序と一致します。 2 つの主な違いは、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。