JS区分数组中的对象和基元[重复]

Posted

技术标签:

【中文标题】JS区分数组中的对象和基元[重复]【英文标题】:JS distinguish between objects and primitives in array [duplicate] 【发布时间】:2019-08-25 18:51:39 【问题描述】:

我有一个更新方法应该更新数组中的一个项目:

function update(array) 
  return array.map(item => 
    // item or primitive?
  )

区分它是对象数组还是原始值的最佳方法是什么(就可靠性和性能而言)?

【问题讨论】:

您可以使用return (value !== Object(value)); 来确定它是否是原始的。 jsfiddle.net/kieranpotts/dy791s96 想要这样做有点奇怪。基元的行为很像不可变对象。 【参考方案1】:

您正在使用every()typeof 运算符

let prim = [1,2,3];
let arrOfObjs = [a:1,b:2];

function isArrayOfObjs(arr)
  return arr.every(x => typeof x === "object");


console.log(isArrayOfObjs(prim))   //false
console.log(isArrayOfObjs(arrOfObjs)) //true

【讨论】:

函数不是基元,但它们有 typeof"function"。另外,typeof null === "object".

以上是关于JS区分数组中的对象和基元[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JS去除数组中重复的数字

js怎么去除数组中的重复的数据

js 去掉数组对象中的重复对象

js 中如何去掉数组中的重复的数据

js如何去除数组中重复项

前端JS:判断list(数组)中的json对象是否重复