如何保留""范围之外的对象关键字名称;在";?Javascript
How do I retain an objects key name outside of scope of "for in"? Javascript
问题:在for in look退出后,如何保留密钥名称。如果我将键字符串分配给"for in"范围之外的变量,它就会变成一个数字。有什么方法可以防止这种情况并维护密钥名称吗?感谢
示例:
var lastItem = undefined;
function getKeyNames(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
lastItem = i;
objects = objects.concat(getObjects(obj[i], key, val));
} else if (i == key && obj[key] == val) {
alert (lastItem);
objects.push(obj);
}
}
return objects;
}
alert (lastItem);
函数内部的alert(和for in内部(输出键的实际字符串名称,但当我在函数外部发出警报时,我会得到一个数字。如何保留密钥的字符串名称?为了清楚起见,我说的不是对象的值,而是键的实际名称。
工作良好:
var foo = { foo : 22, bar : 42 };
for(var i in foo);
alert(i); // "bar"
你到底在传递什么给函数?
您的示例看起来不错。调用getKeyNames
后,lastValue
将保留在对象中找到的最后一个键。
但是,您的示例不调用getKeyNames
,因此alert(lastValue)
应该提醒"未定义"。
如果你在某个地方调用它,并且你发现lastValue
包含一个数字,那么这可能是因为你的对象包含了一个数字。例如,for (var i in ['a','b','c'])
将迭代"length"、"0"、"1"、"2"。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- delete关键字在全局变量上的不同行为
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- JavaScript 中的嵌套函数和 “this” 关键字
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- "这个“;javascript模块中的关键字
- "这个“;javascript回调函数中的关键字
- "这个“;javascript中的关键字(作为实例)
- "这个“;Object方法中的关键字指向Window