那是我的javascript对象。
var myobj = {
'arr1': ['abc','dsf2','ss4'],
'arr893f': ['839f','mdo9','ks92','kcm8'],
....
}如何遍历此对象中数组的所有值?我要穿过'abc','dsf2','ss4', '839f','mdo9','ks92', ...
我可以走过去
for (var value in myobj ) {
console.log(value);//arr1, arr893f
}但这仍然不是我需要的。我需要通过遍历对象使'abc','dsf2','ss4', '839f','mdo9','ks92', ...进入控制台。
只知道这个物体的结构。我们不知道关键的名字或值。
谢谢。
发布于 2014-05-12 16:51:15
for(var propName in myobj)
{
if(myobj.hasOwnProperty(propName)){
var item = myobj[propName];
if(item instanceof Array)
{
item.forEach(function(arrItem, index){
//woo!
});
}
}
}我认为在Object.prototype上创建一个方便的方法可能是有用的。
(function(){
function enumerateProperties(cbHandler, ownProperty){
ownProperty = typeof(ownProperty) == "boolean" ? ownProperty : true;
if(typeof(cbHandler) != "function"){
throw new Error("invalid callback");
}
for(var propName in this){
if((!ownProperty) || this.hasOwnProperty(propName)){
cbHandler(propName, this[propName]);
}
}
}
Object.prototype["enumerateProperties"] =
Object.prototype["enumerateProperties"] || enumerateProperties;
})();所以现在你可以:
var o = {a:1, b:[1, 2, 3], c:3};
o.enumerateProperties(function(propName,propValue){
console.log(propName);
if(propValue instanceof Array){
console.log(propValue.join(", "));
}
else{
console.log(propValue);
}
});https://stackoverflow.com/questions/23614575
复制相似问题