2017-02-21 77 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));