簡體   English   中英

在javascript中提取字段

[英]extract fields in javascript

我有一本字典,我想用它們的鍵提取一些字段。 所以我想要的是調用一個函數,在那里我傳遞這本字典和鍵。

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"
          }}            
function dict(obj)
{
    var list = Object.assign({},obj).data;

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

    return list;
}

這就是你的字典函數應該看起來的樣子

我試過這個。 我想我有問題,因為當節點在迭代中是“名稱”時,我正在創建一個字典。 所以我想確認是否可以,或者是否有其他方法可以做到這一點。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM