La función devuelve el tipo de objeto.
function objOrLis(obj) { if (typeof obj == "object") { poss = "object" try { for (let i of obj) { poss = "list" } } catch { poss = "object" } return poss } else { let c = typeof obj return c } }
Use Array.isArray()
para identificar matrices:
function objOrLis(obj) { return Array.isArray(obj) ? 'list' : typeof obj } console.log(objOrLis([])) console.log(objOrLis({})) console.log(objOrLis(1)) console.log(objOrLis('str'))
Object.prototype.toString da resultados diferentes
const array = [1,2,3]; const set = new Set(array); const map = {a:1,b:2,c:3}; console.log(Object.prototype.toString.call(array)); console.log(Object.prototype.toString.call(set)); console.log(Object.prototype.toString.call(map));
Un ES6 one liner para diferenciar entre una matriz y un objeto .
const objectOrList = (o) => (o instanceof Array ? "list" : (o instanceof Object ? "object" : typeof o))
const objectOrList = (o) => (o instanceof Array ? "list" : (o instanceof Object ? "object" : typeof o)); console.log(objectOrList([])); console.log(objectOrList({})); console.log(objectOrList(1)); console.log(objectOrList("string"));