在javascript中提取字段

时间:2017-01-20 13:45:21

标签: javascript dictionary extraction

我有一本字典,我想用他们的密钥提取一些字段。所以我想要的是调用一个函数,我传递这个词典和键。

var posts = {
     "code":"ok",
     "data":[
            {
              "id":1, 
              "username":"example1",
              "data":
                      {
                        "id":4,
                        "name":"fran"
                      },
            },
            {
              "id":2, 
              "username":"example2",
               "data":
                  {
                    "id":5,
                    "name":"manuel"
                  }            
           }
           ]
    };

所以我想要一个新的字典,其中我将嵌套值作为一个简单的字典值。

          [{
          "id":1, 
          "username":"example1",
          "name":"fran"
          },

          "id":2, 
          "username":"example2",
          "name":"manuel"
          }}            

2 个答案:

答案 0 :(得分:0)

function dict(obj)
{
    var list = Object.assign({},obj).data;

    list.forEach((e,i,a) => {
        e.name = e.data.name;
        delete e.data;
    });

    return list;
}

你的字典功能应该是什么样的

答案 1 :(得分:0)

我试过这个。我认为我有问题,因为我正在创建一个字典,当节点是" name"在迭代中。所以我想确认它是否正常或者还有其他方法可以做到这一点。

var list = [];      
    var dict = {};
    function iterate(obj, stack) {
        for (var property in obj) {         
            if (obj.hasOwnProperty(property)) {
                if (typeof obj[property] == "object") {                    
                    iterate(obj[property], stack + '.' + property);                    
                } else {
                    console.log(property + "   " + obj[property]);          
                    dict[property] = obj[property];
                    if(property=="name"){
                        list.push(dict);
                        dict ={};
                    }
                }
            }           
        }

        return list;
    }

    var simplified = iterate(posts.data, '');
    console.log(simplified);