2017-02-21 81 views
-1

嗨,我有以下對象:某些鍵刪除外部對象,但保持內部的對象

{ 
    "position": { 
    "json": { 
     "left": "57px", 
     "top": "79px" 
    } 
    }, 
} 

它包含了其他幾個鍵,如size等...

我怎樣才能擺脫"json"的但不刪除內部內容,使我的結果看起來像

{ 
    "position": { 
    "left": "57px", 
    "top": "79px" 
    }, 
} 

我需要一種方法來刪除所有具有字符串鍵"json"作爲內容而不移除包含對象。

+0

環路在內的對象鍵,加他們到外面的對象。完成後,通過鍵刪除外部對象。沒有一句話可以說「刪除外部對象鍵,只是將其全部重新分配給它的父對象的子鍵值」。無論嘗試它並在卡住時尋求幫助,都會發生什麼? – Adam

回答

0

這裏的一個可能的修復,使用Object.assign(object,thingToUpdate)更新的json內容作爲直接value一對對象,然後deletejson鍵:

let objects = { 
 
    "position": { 
 
    "json": { 
 
     "left": "57px", 
 
     "top": "79px" 
 
    } 
 
    }, 
 
    "size": { 
 
    "json": { 
 
     "left": "57px", 
 
     "top": "79px" 
 
    } 
 
    } 
 
} 
 

 
function removeJSONString(obj) { 
 
    // store all keys of this object for later use 
 
    let keys = Object.keys(obj); 
 
    // for each key update the "json" key 
 
    keys.map(key => { 
 
    // updates only if it has "json" 
 
    if (obj[key].hasOwnProperty("json")) { 
 
     // assign the current obj a new field with "json" value pair 
 
     Object.assign(obj[key], obj[key]["json"]); 
 
     // delete "json" key from this object 
 
     delete obj[key]["json"]; 
 
    } 
 
    }) 
 
    // updated all fields of obj 
 
    return obj; 
 
} 
 

 
console.log(removeJSONString(objects));