var obj = {
skill:{
eat:true,
walk:true
},
address:{
home:"where",
company:"where"
}
};
我可以得到一个项目:如何操作对象结构中的JavaScript
tester.activate(obj[skill]);
我怎样才能获得的所有项目?
var obj = {
skill:{
eat:true,
walk:true
},
address:{
home:"where",
company:"where"
}
};
我可以得到一个项目:如何操作对象结构中的JavaScript
tester.activate(obj[skill]);
我怎样才能获得的所有项目?
您可以通过对象的属性迭代与for ... in
:
for (var k in obj) {
if (obj.hasOwnProperty(k)) {
var value = obj[k];
alert("property name is " + k + " value is " + value);
}
}
的“hasOwnProperty”函数的调用也可把这个代码通过实际上是继承了目前的“目标文件”属性迭代来自Object原型。 有时候你可能想要包括这些,但在这种情况下,过滤它们是安全的(我认为)。 (和@sdleihssirhc指出,如果你想成为真正肯定,您可以使用Object.prototype.hasOwnProperty.call(obj, k)
)
让我们看看你对这个问题的猜测是否得到了回报。 (或者这个问题对你来说很明显,但对我来说不是吗?) – Phrogz 2011-01-31 17:15:21
如果你需要的技能,你可以得到
obj.skill
如果您需要的地址,你可以得到
obj.address
,或者如果你想获得个人数据:
var eat = obj.skill.eat;
var company = obj.address.company;
如果你想你可以遍历结构的项目,推动所有项目到数组
function pushObjToArray(obj, array) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key] instanceof Array) {
pushObjToArray(obj[key], array);
} else if (obj[key] instanceof Object) {
pushObjToArray(obj[key], array);
} else {
array.push(obj[key]);
}
}
}
return array;
}
var array = [];
pushObjToArray(array, obj);
退一步破坏键和所有的数据推到一个数组没什么用。
你真的想做什么?
你可能会寻找类似_.flatten
你的问题是不明确的。 – Phrogz 2011-01-31 17:14:01