potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

JavaScript 配列様オブジェクトかプロパティから判定する

Array.from()lengthプロパティが正の整数とみなせるオブジェクトを配列様オブジェクト(Array-like object、配列のようなオブジェクト)と判断していると考えられます。

真の配列様オブジェクトかの判断は反復可能オブジェクト以外を与えてArray.from()の結果が空配列か確認するのが確実ですが、ここではプロパティから判定する関数を紹介します。

const isArrayLikeObjectByProp = (o) => parseInt(o.length) >= 0
console.log(isArrayLikeObjectByProp({}));
// false
console.log(isArrayLikeObjectByProp({length: 5.5}));
// true
console.log(isArrayLikeObjectByProp({length: 5}));
// true
console.log(isArrayLikeObjectByProp({length: "5"}));
// true
console.log(isArrayLikeObjectByProp({length: "a"}));
// false
console.log(isArrayLikeObjectByProp({length: undefined}));
// false
console.log(isArrayLikeObjectByProp({length: NaN}));
// false