我想检查JS对象中是否存在“键”。有办法做到这一点吗?数据可以是一个任意子分支
例子:
var sometree = {
foo : {
data : 1
},
foo2 : {
data : 5
}
}
function checkForKey(key, obj) {
//If I do "checkForKey(5, sometree)", I want the function
//to return "sometree.foo2.data".
}
getDeepKeyForValue
函数可以以“只给我一个”或“给我全部”的形式实现。您也可以要求它支持复杂的对象,但我编写的是支持简单值的对象。注意:因为键可以有'
在它们中,我返回一个键路径的数组
,并让您处理这些转角情况。您也无法从函数中恢复sometree
已识别/变量名。这会有用的…:
function getDeepKeyForValue (value, object, path) {
var keySet = Object.keys(object || {});
var key;
var result;
path = path || [];
keySetLength = keySet.length;
while (keySetLength--) {
key = keySet[keySetLength];
if (value === object[key]) {
return path.concat(key);
}
result = getDeepKeyForValue(value, object[key], path.concat(key));
if (result) {
return result;
}
}
return null;
}
应采取以下措施:
function checkForKey(key, json) {
var found = false;
for(var x in json) {
if (json.hasOwnProperty(x)) {
if(json[x][data] == key) {
found = key;
}
}
}
return found;
}
如果对象可以是任意深度,则需要递归:
var sometree = {
foo: {
data: 1
},
foo2: {
data: 5
}
}
function checkForValue( value, json, name ) {
var result = checkObject( value, json );
return result ? name +'.'+ result : null;
}
function checkObject( value, json ) {
var keys = Object.keys(json);
for ( var i = 0; i < keys.length; i++ ) {
var key = keys[i];
if ( typeof json[key] === 'object' && json[key] !== null ) {
var result = checkObject( value, json[key] );
if ( result )
return key +'.'+ result;
}
else if ( json[key] === value ) {
return key;
}
}
return null;
}
document.write( checkForValue( 5, sometree, 'sometree' ) );
问题内容: 我试图在执行此行之前检查元素是否存在: 如果id 在文档中不存在,甚至在-block中,都会引发错误“ no such element” 。我找到了Java的答案,您可以在其中检查大小是否为0,但是在node-js中,这会在我检查大小之前引发错误。 问题答案: 您可以利用的可选错误处理程序参数。 我在文档中找不到明确声明的内容,但是通过模块源代码中的函数定义确定了这一点:
问题内容: 我有一个看起来像元组的列表: 检查该元组中是否存在值的最佳方法是什么?例如,我想能够说: 并得到真 问题答案: 您正在寻找: 结合一个简单的生成器表达式,就可以完成任务。生成器表达式接受每个元组,如果包含则产生。然后在请求的第一个项目返回时返回(否则为)。因此,这就是您想要的。它也可以很好地读取- 如果有任何元组包含。 如果您要执行大量操作并且需要性能,那么可能值得设置所有值的集合以使
我有一个js对象,如下所示。 我现在的代码是。 我的问题是我的代码可以有的值,但是如果在这种情况下我做了然后我就得到了现实。 如何确保我的数据具有和,以及可以具有值。 jsfiddle:https://jsfiddle.net/3jo7vx4p/ 我们衷心感谢您的帮助。
问题内容: 如何检查JavaScript对象或数组中是否存在特定键? 如果密钥不存在,而我尝试访问它,它将返回false吗?还是抛出错误? 问题答案: 检查不确定性不是测试密钥是否存在的准确方法。如果密钥存在但值实际上是怎么办? 您应该改为使用运算符: 如果要检查密钥是否不存在,请记住使用括号: 或者,如果您要特别测试对象实例的属性(而不是继承的属性),请使用: 有关和的方法之间的性能比较,关键是
问题内容: 我想检查Selenium中是否存在一个元素,如果存在,请将其分配给一个名称。 现在,我有这样的东西: 但是,当不存在值为9的元素时,它将返回错误。有没有一种方法可以检查它是否存在,或者类似的东西? 问题答案: 有几种选择。我推荐这些。 1.创建方法或Web驱动程序扩展。 2.计算元素,如果有1个或更多元素,则获取它。 那你可以检查
问题内容: 将页面对象与webdriver一起使用时,如何检查元素是否存在。 到目前为止,我是这样做的。 页面对象: 但是我不敢相信这种尝试/捕获是人们应该这样做的方式。 那么检查元素是否退出的更好方法是什么(使用Page Objects)? 问题答案: Webdriver旨在在未找到元素的情况下引发异常。因此,没有任何方法可以验证Webdriver中元素的存在。 进行检查-http://grou