web-dev-qa-db-ja.com

jsonオブジェクトのキーと値を削除する方法は?

以下に示すように、jsonオブジェクトがあります。動作しないコードを使用して「otherIndustry」エントリとその値を削除したい場合。

var updatedjsonobj = delete myjsonobj['otherIndustry'];

Jsonオブジェクト固有のキーとその値を削除する方法。以下は、「otherIndustry」キーとその値を削除したいjsonオブジェクトの例です。

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

ログは、オブジェクトから「otherIndustry」エントリを削除せずに、同じオブジェクトを引き続き出力します。

19
krish kr

delete演算子は、removeオブジェクトpropertyに使用されます。

delete演算子しないは新しいオブジェクトを返し、booleanのみを返します:trueまたはfalse

一方、インタープリターがvar updatedjsonobj = delete myjsonobj['otherIndustry'];を実行した後、updatedjsonobj変数はboolean値を格納します。

Jsonオブジェクト固有のキーとその値を削除する方法は?

オブジェクトのプロパティからプロパティ名を削除するには、プロパティ名を知っている必要があります。

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

値がわかっているときにkeyを削除する場合は、特定のオブジェクトの列挙可能なプロパティの配列を返すObject.keys関数を使用できます。

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

これに従ってください、あなたが探しているもののようになります:

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

var key = "Objone";
delete obj[key];
console.log(obj); // prints { "objtwo": two}
3
Muayyad Ayesh

もう1つ例を示します。 (参照を確認してください)

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;
}
2
Penny Liu

これを行うにはいくつかの方法があり、それらを1つずつ見てみましょう。

  1. delete method:最も一般的な方法
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. キー値を作成することで未定義:代替のより高速な方法:
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. Es6 spread演算子の場合:
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);

またはomit() of nderscore js libraryを使用できる場合:

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

何を使用するのか??

新しいフィルターオブジェクトを作成したくない場合は、オプション1または2を選択します。値をオーバーライドするため、2番目のオプションでオブジェクトをletで定義してください。または、それらのいずれかを使用できます。

お役に立てれば :)

私は同じ名前の2つのキー「dateTo」を持っています最初のアドレスから1つだけを削除したいのですが、可能ですか?

            "addresses":
                        [
                            {
                                "houseNumber":"3", "address1":"Rowlands Close",
                                "townCity":"Training Town", "postcode":"IV44 8TZ",
                                "dateTo":"2019-12-31", "dateFrom":"2016-01-1"
                            },
                {
                                "houseNumber":"5", "address1":"Rowlands Close",
                                "townCity":"Training Town", "postcode":"IV44 8TZ",
                                "dateTo":"2015-12-31", "dateFrom":"2013-01-1"
                            }

                        ]

0
Sandeep Negi

返されたJSONオブジェクトを削除しようとすると問題が発生し、実際には文字列であることがわかりました。削除する前にJSON.parse()を実行すると、キーが確実に削除されます。

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}
0
Nick Gooch