問題:在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