首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历包含数组的对象

遍历包含数组的对象
EN

Stack Overflow用户
提问于 2014-05-12 16:47:39
回答 1查看 182关注 0票数 2

那是我的javascript对象。

代码语言:javascript
复制
var myobj = {
'arr1': ['abc','dsf2','ss4'],
'arr893f': ['839f','mdo9','ks92','kcm8'],
 ....
}

如何遍历此对象中数组的所有值?我要穿过'abc','dsf2','ss4', '839f','mdo9','ks92', ...

我可以走过去

代码语言:javascript
复制
for (var value in myobj ) {
  console.log(value);//arr1, arr893f
}

但这仍然不是我需要的。我需要通过遍历对象使'abc','dsf2','ss4', '839f','mdo9','ks92', ...进入控制台。

只知道这个物体的结构。我们不知道关键的名字或值。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-12 16:51:15

代码语言:javascript
复制
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上创建一个方便的方法可能是有用的。

代码语言:javascript
复制
(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;
})();

所以现在你可以:

代码语言:javascript
复制
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);
    }
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23614575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档