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

如何判断某一个值是数组

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 563 (opens in a new tab)

Author 回答者: shfshanyue (opens in a new tab)

完美实现一个月下载量超过一个亿的包: isarray (opens in a new tab)

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

Author 回答者: illumi520 (opens in a new tab)

a instanceof Array

Author 回答者: illumi520 (opens in a new tab)

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

Author 回答者: lkzwc (opens in a new tab)

arr.proto === Array.prototype

Author 回答者: wuzqZZZ (opens in a new tab)

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

Author 回答者: sisipyhus (opens in a new tab)

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

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

Author 回答者: sisipyhus (opens in a new tab)

完美实现一个月下载量超过一个亿的包: isarray (opens in a new tab)

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

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

Author 回答者: DyCoder2015 (opens in a new tab)

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