润滑猴测试数组元素是否存在
Greasemonkey testing if array element exists
我正在编写一个脚本,该脚本使用基于链接部分的数组中的元素为页面上的内容添加标签...所以我的数组看起来像这样:
var componentList[9] = "Sunnyseed"
var componentList[10] = "Echoberry"
var componentList[11] = "Riverstone"
var componentList[13] = "Auraglass"
var componentList[14] = "Skypollen"
您会注意到没有"12"... 我希望当数组项不存在时标签为"未知"。 现在,我无法完全测试我的解决方案,因为我无法导致目标页面向我抛出 12...所以我希望有人能告诉我这是否会做我想做的事......
var component = ""
if(typeof componentList[critterIDval] == 'undefined'){
component="Unknown"
}
else{
component=componentList[critterIDval]
}
这显然不是完整的剧本,但它应该是重要的东西...... 我只想知道当小动物 IDval 为 12 岁时,这是否会让它说"未知" - 因为可能需要数年时间才能遇到这种情况进行测试。
你差不多就在那里。您在比较中使用了单等号,所以这会搞砸它,我不确定您是否可以创建这样的 JS 数组,但除此之外,您很好。
这是我为它运行的测试:
var componentList = [];
componentList[9] = "Sunnyseed";
componentList[10] = "Echoberry";
componentList[11] = "Riverstone";
componentList[13] = "Auraglass";
componentList[14] = "Skypollen";
for (var critterIDval = 9; critterIDval < 15; critterIDval++) {
if (typeof componentList[critterIDval] == 'undefined') { // double equals here
component = "Unknown";
} else {
component = componentList[critterIDval];
}
console.log(component);
}
看起来不错。
虽然如果你确定该值永远不会是一个空字符串(如componentList[14] = '';
),那么你可以尝试
var component = componentList[critterIDval] || 'Unknown'
我希望当数组项不存在时标签为"未知"。
typeof 运算符不会告诉您属性是否存在,因为它会在属性不存在时返回 undefined,但当它确实存在并已分配值undefined
或只是创建但尚未分配值时,也会返回 undefined。
主要方法可以测试属性是否存在:in
运算符(也查找[[Prototype]]
链)和所有对象的hasOwnProperty
方法。所以
if (componentList.hasOwnProperty(critterIDval)) {
component = "Unknown"
} else {
component = componentList[critterIDval]
}
你也可以写成:
component = componentList.hasOwnProperty(critterIDval)? componentList[critterIDval] : 'unknown';
还有其他方法,例如查看Object.keys(componentList)
和componentList.propertyIsEnumerable(critterIDval)
,但以上是最常见的。
编辑
如果你的要求不仅仅是测试属性是否存在,还要测试"真实"值,那么:
if (componentList[critterIDval])
可能就足够了,并且当值为 ''
(空字符串)、0
、false
、NaN
、undefined
或 null
时返回 false。
也许只测试一个非空字符串或数字就可以了:
if (/.+/.test(componentList[critterIDval]))
但这返回true
NaN
、null
等。因此,您需要指定实际测试的内容,否则可能会得到某些值的意外结果。
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否存在React Native“;WEB代码安全防护”;
- 验证会话中是否存在对象's数组
- 如何查找值是否存在于二叉树中
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 检查数组中是否存在字符串值,并返回找到的数组值js
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 检查是否存在任意控制器/操作
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- javascript测试是否存在两个标志中的任何一个
- 如何使用javascript检查移动sd卡中是否存在文件
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 需要帮助使用JQuery.inArray()检查值是否存在
- 确定元素是否存在
- 使用javascript检查服务器上是否存在html文件
- 是否存在类似ExtJS 4的框架;正常的“;网站