how to remove json object key and value.?
Asked Answered
W

7

77

I have a json object as shown below. where i want to delete the "otherIndustry" entry and its value by using below code which doesn't worked.

var updatedjsonobj = delete myjsonobj['otherIndustry'];

How to remove Json object specific key and its value. Below is my example json object where i want to remove "otherIndustry" key and its value.

var myjsonobj =  {
      "employeeid": "160915848",
      "firstName": "tet",
      "lastName": "test",
      "email": "[email protected]",
      "country": "Brasil",
      "currentIndustry": "aaaaaaaaaaaaa",
      "otherIndustry": "aaaaaaaaaaaaa",
      "currentOrganization": "test",
      "salary": "1234567"
    };
delete myjsonobj ['otherIndustry'];
console.log(myjsonobj);

where the log still prints the same object without removing 'otherIndustry' entry from the object.

We answered 6/10, 2017 at 6:25 Comment(12)
Possible duplicate of Remove key-value pair from JSON objectStudent
Your code should work, can you create a MVCE stackoverflow.com/help/mcveNocturne
delete myObj.other.key1; As shown in this example.Intellectual
which doesn't worked What was the result? can you please explain?Morrell
Nope @Alexandru-IonutMihai, actually my code is var myjsonobj ={ "employeeid": "160915848", "firstName": "tet", "lastName": "test", "email": "[email protected]", "country": "Brasil", "currentIndustry": "aaaaaaaaaaaaa", "otherIndustry": "aaaaaaaaaaaaa", "currentOrganization": "test", "salary": "1234567" }; delete myjsonobj ['otherIndustry']; console.log(myjsonobj ); still prints the same object. :(We
@krishkr, and what are you trying to do ?Balkanize
@krishkr, prints typeof myjsonobj and tell me what you've received.Balkanize
@Alexandru-IonutMihai console.log(typeof myjsonobj); prints "string" :( how can i convert it to json before json delete method usage. ?We
@krishkr, use this: myjsonobj=JSON.parse(myjsonobj); delete myjsonobj['otherIndustry']Balkanize
@Alexandru-IonutMihai thanks a lot that works, can you help me how to get back to the string after json parse which is needed to my AJAX call.We
Yes, just use myjsonobj=JSON.stringify(myjsonobj)Balkanize
Possible duplicate of How do I remove a property from a JavaScript object?Kennedy
B
123

delete operator is used to remove an object property.

delete operator does not returns the new object, only returns a boolean: true or false.

In the other hand, after interpreter executes var updatedjsonobj = delete myjsonobj['otherIndustry']; , updatedjsonobj variable will store a boolean value.

How to remove Json object specific key and its value ?

You just need to know the property name in order to delete it from the object's properties.

delete myjsonobj['otherIndustry'];

let myjsonobj = {
  "employeeid": "160915848",
  "firstName": "tet",
  "lastName": "test",
  "email": "[email protected]",
  "country": "Brasil",
  "currentIndustry": "aaaaaaaaaaaaa",
  "otherIndustry": "aaaaaaaaaaaaa",
  "currentOrganization": "test",
  "salary": "1234567"
}
delete myjsonobj['otherIndustry'];
console.log(myjsonobj);

If you want to remove a key when you know the value you can use Object.keys function which returns an array of a given object's own enumerable properties.

let value="test";
let myjsonobj = {
      "employeeid": "160915848",
      "firstName": "tet",
      "lastName": "test",
      "email": "[email protected]",
      "country": "Brasil",
      "currentIndustry": "aaaaaaaaaaaaa",
      "otherIndustry": "aaaaaaaaaaaaa",
      "currentOrganization": "test",
      "salary": "1234567"
}
Object.keys(myjsonobj).forEach(function(key){
  if (myjsonobj[key] === value) {
    delete myjsonobj[key];
  }
});
console.log(myjsonobj);
Balkanize answered 6/10, 2017 at 6:28 Comment(2)
So irrespective of return value, will the key:value be deleted from object, as per OP's code?Morrell
you can also use dot notation: delete myjsonobj.otherIndustry;Mcclimans
R
19

There are several ways to do this, lets see them one by one:

  1. delete method: The most common way

const myObject = {
    "employeeid": "160915848",
    "firstName": "tet",
    "lastName": "test",
    "email": "[email protected]",
    "country": "Brasil",
    "currentIndustry": "aaaaaaaaaaaaa",
    "otherIndustry": "aaaaaaaaaaaaa",
    "currentOrganization": "test",
    "salary": "1234567"
};

delete myObject['currentIndustry'];
// OR delete myObject.currentIndustry;
  
console.log(myObject);
  1. By making key value undefined: Alternate & a faster way:

let myObject = {
    "employeeid": "160915848",
    "firstName": "tet",
    "lastName": "test",
    "email": "[email protected]",
    "country": "Brasil",
    "currentIndustry": "aaaaaaaaaaaaa",
    "otherIndustry": "aaaaaaaaaaaaa",
    "currentOrganization": "test",
    "salary": "1234567"
  };

myObject.currentIndustry = undefined;
myObject = JSON.parse(JSON.stringify(myObject));

console.log(myObject);
  1. With es6 spread Operator:

const myObject = {
    "employeeid": "160915848",
    "firstName": "tet",
    "lastName": "test",
    "email": "[email protected]",
    "country": "Brasil",
    "currentIndustry": "aaaaaaaaaaaaa",
    "otherIndustry": "aaaaaaaaaaaaa",
    "currentOrganization": "test",
    "salary": "1234567"
};


const {currentIndustry, ...filteredObject} = myObject;
console.log(filteredObject);

Or if you can use omit() of underscore js library:

const filteredObject = _.omit(currentIndustry, 'myObject');
console.log(filteredObject);

When to use what??

If you don't wanna create a new filtered object, simply go for either option 1 or 2. Make sure you define your object with let while going with the second option as we are overriding the values. Or else you can use any of them.

hope this helps :)

Rebeccarebecka answered 26/8, 2019 at 16:15 Comment(0)
R
8

Follow this, it can be like what you are looking:

var obj = {
    Objone: 'one',
    Objtwo: 'two'
};

var key = "Objone";
delete obj[key];
console.log(obj); // prints { "objtwo": two}
Romito answered 6/10, 2017 at 6:41 Comment(0)
R
2

Here is one more example. (check the reference)

const myObject = {
  "employeeid": "160915848",
  "firstName": "tet",
  "lastName": "test",
  "email": "[email protected]",
  "country": "Brasil",
  "currentIndustry": "aaaaaaaaaaaaa",
  "otherIndustry": "aaaaaaaaaaaaa",
  "currentOrganization": "test",
  "salary": "1234567"
};
const {otherIndustry, ...otherIndustry2} = myObject;
console.log(otherIndustry2);
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}
Radioactivity answered 4/10, 2018 at 7:20 Comment(0)
L
2
function omit(obj, key) {
    const {[key]:ignore, ...rest} = obj;
    return rest;
}

You can use ES6 spread operators like this. And to remove your key simply call

const newJson = omit(myjsonobj, "otherIndustry");

Its always better if you maintain pure function when you deal with type=object in javascript.

Lapith answered 12/11, 2020 at 11:5 Comment(0)
O
0

I had issues with trying to delete a returned JSON object and found that it was actually a string. If you JSON.parse() before deleting you can be sure your key will get deleted.

let obj;
console.log(this.getBody()); // {"AED":3.6729,"AZN":1.69805,"BRL":4.0851}
obj = this.getBody();
delete obj["BRL"];
console.log(obj) // {"AED":3.6729,"AZN":1.69805,"BRL":4.0851}
obj = JSON.parse(this.getBody());
delete obj["BRL"];
console.log(obj) // {"AED":3.6729,"AZN":1.69805}
Offprint answered 26/8, 2019 at 15:12 Comment(0)
L
0

In case you want to reassign a value (or 2 values) you can use @Mohammed Amir Ansari's answer and modify it a bit like this:

const myCarObject= { manufacturer: 'BMW',model: "M4", hp:503  };
const { model, hp, ...manufacturer} = myCarObject;
console.log(manufacturer)
//OUTPUT:
//{ manufacturer: 'BMW'}

console.log(model)
//OUTPUT:
//"M4"

console.log(hp)
//OUTPUT:
//503

This will extract the values from the car object and assign them to the other variables.

A bit late to the party, hope it will help someone.

Lunge answered 4/7, 2024 at 21:46 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.