potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

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