442

2つの違いは何ですか?

だから私はそれarray.size()が関数でarray.lengthあり、プロパティであることを知っています。どちらか一方を使用するユースケースはありますか? より効率的ですか?(.lengthメソッド呼び出しではなくプロパティであるため、大幅に高速になると思いますか?) なぜ遅いオプションを使用するのでしょうか? どちらとも互換性のないブラウザはありますか?

  var x = [];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);
  x =[1,2,3];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);

印刷します:

  0, 0, true
  3, 3, true
4

10 に答える 10

596

Array.size() は有効なメソッドではありません

常に length プロパティを使用する

これはネイティブの配列メソッドではないため、size メソッドを配列プロトタイプに追加するライブラリまたはスクリプトがあります。これは通常、カスタム ゲッターのサポートを追加するために行われます。これを使用する例は、配列のメモリ内のサイズを取得する場合です (これは、この名前に役立つと私が考えることができる唯一のものです)。

残念ながら、Underscore.jssizeは、オブジェクトまたは配列の長さを実際に返すメソッドを定義しています。残念ながら、関数の長さプロパティは名前付き引数の数として定義されているため、関数は代替を使用する必要があり、サイズが選択されたと宣言しています (count の方が適切な選択でした)。

于 2013-01-07T19:32:16.270 に答える
172

.size()のネイティブ JS 関数ではありませんArray(少なくとも、私が知っているブラウザーではそうではありません)。

.length 使用する必要があります。


もしも

.size() プロトタイプをいじるプロトタイプのような余分なライブラリが含まれていないことを確認してくださいArray

また

Arrayプロトタイプをいじっているブラウザのプラグインがあるかもしれません。

于 2013-01-07T19:23:23.697 に答える
34

この.size()関数は、Jquery および他の多くのライブラリで利用できます。

この.lengthプロパティは、インデックスが整数の場合にのみ機能します。

lengthプロパティ、次のタイプの配列で機能します。

var nums = new Array();
nums[0] = 1; 
nums[1] = 2;
print(nums.length); // displays 2

lengthプロパティは、このタイプの配列では機能しません:

var pbook = new Array(); 
pbook["David"] = 1; 
pbook["Jennifer"] = 2;
print(pbook.length); // displays 0

したがって、あなたの場合は、.lengthプロパティを使用する必要があります。

于 2016-05-25T13:44:10.393 に答える
2

サイズは重複を検出し、一意の値の数を返します

const set1 = new Set([1, 2, 3, 4, 5, 5, 5, 6]);
console.log(set1.size);
// expected output: 6
于 2019-06-15T14:57:24.397 に答える