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区分数组中的对象和基元[重复]的主要内容,如果未能解决你的问题,请参考以下文章