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