问题:在for退出后如何保留键名。如果我将密钥字符串分配给“for in”范围之外的变量,它将变成一个数字。有什么办法来防止这种情况并保持关键的名字?由于如何保留“for in”范围之外的对象键名? Javascript
例子:
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);
函数内部警报(和内中)outputes关键的实际字符串名称,但是当我提醒功能外,我得到了一些。任何想法如何保留密钥的字符串名称?只是为了说清楚我并不是在谈论对象的价值,而是在谈论关键的实际名称。
该代码不完整。你在哪里调用'getKeyNames()'? – slebetman
第一个“if”语句后的缩进会导致语法混淆错误(太多的大括号)。你能解决这个问题吗? – maerics
另外,如何定义“getObjects”函数? – maerics