高级前端js【Q549】如何判断某一个值是数组

如何判断某一个值是数组

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 563

Author 回答者: shfshanyue

完美实现一个月下载量超过一个亿的包: isarray

const isArray = Array.isArray || list => ({}).toString.call(list) === '[object Array]'

Author 回答者: illumi520

a instanceof Array

Author 回答者: illumi520

const a = []; console.log(a.constructor == Array);//true

Author 回答者: lkzwc

arr.proto === Array.prototype

Author 回答者: wuzqZZZ

// 理论上这个足够用了,又简洁又有效
Array.isArray();
// 补充个评论里没有的
Object.prototype.toString.call([]).slice(8, -1) === "Array";

Author 回答者: sisipyhus

const a = []; console.log(a.constructor == Array);//true

constructor的值可以被修改 所以这种判断方式不太妥

Author 回答者: sisipyhus

完美实现一个月下载量超过一个亿的包: isarray

const isArray = Array.isArray || list => ({}).toString.call(list) === '[object Array]'

运算符|| 后面需要加上 ()将函数包裹 不然会报错

Author 回答者: DyCoder2015

const isArray = Array.isArray || list => ({}).toString.call(list) === ‘[object Array]’