I have been trying to delete a nested object from a JavaScript object, with no success and have not been able to find the correct answer through searching previous posts.
Here is what I have been trying to do.
<code id='code'></code>
var myobj = {
"children": [
{
"name": "albuterol ",
"children": [
{
"name": "albuterol - fluticasone ",
"children": [
{
"name": "prednisone ",
"children": [
{
"name": "dexamethasone ",
"children": [],
"size": 1,
"colname": "CONCEPT_NAME.4"
}
],
"size": 3,
"colname": "CONCEPT_NAME.3"
}
],
"size": 4,
"colname": "CONCEPT_NAME.2"
}]}]}
function deleteObject(myobj) {
var x = delete myobj.colname
return (myobj.name, myobj.children)
}
document.getElementById('code').innerText = JSON.stringify(deleteObject(myobj))
I want to delete the object colname. Am I missing something or is the code completely incorrect?
Federico klez Culloca
27.3k17 gold badges61 silver badges102 bronze badges
asked Jun 27, 2018 at 15:37
user9807750
2 Answers 2
You need a recursive function to delete the property.
var myobj = {
"children": [
{
"name": "albuterol ",
"children": [
{
"name": "albuterol - fluticasone ",
"children": [
{
"name": "prednisone ",
"children": [
{
"name": "dexamethasone ",
"children": [],
"size": 1,
"colname": "CONCEPT_NAME.4"
}
],
"size": 3,
"colname": "CONCEPT_NAME.3"
}
],
"size": 4,
"colname": "CONCEPT_NAME.2"
}]}]}
function deleteColnameRecursive(obj){
delete obj.colname
if(obj.children){
for(var i=0;i<obj.children.length;i++)
deleteColnameRecursive(obj.children[i]);
}
}
deleteColnameRecursive(myobj);
console.log(myobj);
answered Jun 27, 2018 at 15:49
Jamiec
136k15 gold badges143 silver badges202 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
MyObj does not directly have a property of colname. MyObj has an array named Children.
To delete the proper attribute, select the proper object. For example myObj.children[0].colname
Comments
lang-js
myobjdoes not have a property calledcolnamecolname? There are many