javascript - 是否有用于对象/哈希的 $.inArray 函数?

标签 javascript jquery

类似这样的事情:

object = { 'one' : 1, 'two' : 2 }
$.inObject(object, 'one') // returns true
$.inObject(object, 'three') // returns false

它只会搜索键。

最佳答案

最安全的方法是使用 .hasOwnProperty():

obj = { 'one' : 1, 'two' : 2 };
obj.hasOwnProperty('one') // returns true
obj.hasOwnProperty('three') // returns false

您还可以使用 in 运算符,正如其他人建议的那样:

obj = { 'one' : 1, 'two' : 2 };
console.log('one' in obj)   // true
console.log('three' in obj) // false

但是,in 运算符可能会被对象原型(prototype)上的任何属性所混淆,这些属性可能已通过某些库或其他代码添加到 Object,因此 hasOwnProperty() 通常被认为是检测您自己添加到实际对象中的内容的更安全的选择。换句话说,如果有人向对象原型(prototype)添加了方法或属性,它会被 in 运算符获取,但不会被 .hasOwnProperty() 获取,后者仅检查实际对象本身,而不是任何继承的属性。

<小时/>

仅供引用,这对于您的特定用途来说可能有点过分了,但是有一个 Set 对象和一个 ValueSet 对象的实现使用这种类型的逻辑并在此处提供许多典型的Set操作:Mimicking sets in JavaScript? 。这些代码也可用于 Set 对象,因此如果您想进一步自学,您可以了解它是如何工作的。

关于javascript - 是否有用于对象/哈希的 $.inArray 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547023/

相关文章:

javascript - 使用 Javascript 通过 ID 查找元素的最佳性能。数组还是对象?

javascript - 访问事件之外的方法

javascript - 具有 TimeStamp 属性的 jQuery float 据

javascript - 为什么我的捕获括号之外的字符包含在我的正则表达式的匹配中?

javascript多边形相交

javascript - 当使用 jQuery 切换隐藏 div 时,使用 jquery 添加/更改 CSS

jquery - 轮播不在桌面上显示图像

直系孙辈的 jQuery 选择器

javascript - css 属性未正确应用 [底部,右侧]

javascript - 通过网络添加到 Windows Phone 8 中的日历