web-dev-qa-db-ja.com

JavaScriptオブジェクト内のアイテムのリストの長さを取得しますか?

現在、次のようなJavaScriptオブジェクトがあります。

_Object {0: 8, 1: 9, 2: 10}_

オブジェクト内の個々のアイテムの数(3など)を取得しようとしていますが、その方法がわかりません。オブジェクトは配列ではないため、.length()を呼び出すことはできません。 huntsList[2].toString().split('.').lengthを使用して項目をコンマで分割し、このようにカウントしましたが、オブジェクト全体を次のような単一の文字列に変換するため、1を返します:_["[object Object]"]_。

これを達成するための提案はありがたいです。

11
user3802348

キーの配列を返すObject.keysを使用してキーを取得できます。

var obj = {0: 8, 1: 9, 2: 10};

var keys = Object.keys(obj);

var len = keys.length
12
omarjmh

Object.keys()を使用できます。オブジェクトのキーの配列を返します。

var myObject = {0: 8, 1: 9, 2: 10};
console.log(Object.keys(myObject).length)
6
dork

1:ES5.1ソリューションはObject.keysを使用します-指定されたオブジェクト自身の列挙可能なプロパティの配列を返します

var obj = {
  0: 8,
  1: 9,
  2: 10
}
console.log(Object.keys(obj).length)

2:ES5以前のソリューション:for..inおよびhasOwnを使用

var obj = {
  0: 8,
  1: 9,
  2: 10
};

var propsLength = 0;
for (prop in obj) {
  if (obj.hasOwnProperty(prop)) {
    propsLength = propsLength + 1;
  }
}
console.log(propsLength);

3:ライブラリソリューション:lodash/underscoreを使用して配列に変換し、その長さをクエリします。純粋なjsソリューションが必要な場合は、toArrayの仕組みを調べます。

console.log(_.toArray({
  0: 8,
  1: 9,
  2: 10
}).length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
5
TMB
var obj = {0: 8, 1: 9, 2: 10};
alert(Object.keys(obj).length);

このコードを使用して、オブジェクトメイトの長さを警告してみてください。

1
sudhakar phad