2017-08-04 13 views
-3

は、次のように私はオブジェクトを作成言ってやるがいい。typescriptのオブジェクトからいくつかのプロパティを削除するにはどうすればよいですか?

formSummery: any = []; 

{ 
    "jobs" : [ { 
    "job_id" : 10, 
    "users" : [ { 
     "user_id" : 11, 
     "data_points" : [ { 
     "efficiency" : "good", 
     "form_id" : "2", 
     "instrument_type" : "plug", 
     "background_value" : "7", 
     "surveyed_item_id" : "100", 
     "duration" : 0, 
     "start_time" : "2017-07-20T04:04:43.000Z", 
     "datastream" : "GENERIC", 
     "username" : "[email protected]" 
     }] 
    } ] 
    } ] 
} 

次のように新しいformSummeryで終わるために、プロパティデータストリーム、ユーザ名とのstart_timeを削除するための最良の方法は何ですか? (formSummery)

{ 
    "jobs" : [ { 
    "job_id" : 10, 
    "users" : [ { 
     "user_id" : 11, 
     "data_points" : [ { 
     "efficiency" : "good", 
     "form_id" : "2", 
     "instrument_type" : "plug", 
     "background_value" : "7", 
     "surveyed_item_id" : "100", 
     "duration" : 0 
     }] 
    } ] 
    } ] 
} 

今、私は2つの同じ配列のformSummeryとunstrdformSummeryを持っている、と私はまだいくつかのプロパティ二番目の配列から(unstrdformSummery)とそれらのプロパティを削除したい最初の配列にしたい:

formSummery = 
{ 
    "planned_activity":"Yes", 
    "ingest_time":"2017-08-03T12:12:32.456Z", 
    "arrival_time":"8", 
    "device_id":"26e09c88237d5342", 
    "user_name":"ABC","form_id":"1", 
    "firmware_version":"2.2", 
    "site_access_was_provided_as_expected":"Yes", 
    "energy_manager":"Aaaa", 
    "duration":0, 
    "start_time":"2017-08-03T12:12:28.736Z", 
    "datastream":"GENERIC", 
    "addressing_percent_complete":"92", 
    "password":"pwd", 
    "template_name":"Daily Field Report", 
    "user_id":11, 
    "site_access_notes":"testing", 
    "startup_percent_complete":"65", 
    "energy_manager_ip":"0:0:0:0", 
    "was_site_access_granted_on_time":"Yes", 
    "departure_time":"9", 
    "username":"[email protected]" 
} 


unstrdformSummery = 
{ 
    "planned_activity":"Yes", 
    "ingest_time":"2017-08-03T12:12:32.456Z", 
    "arrival_time":"8", 
    "device_id":"26e09c88237d5342", 
    "user_name":"ABC","form_id":"1", 
    "firmware_version":"2.2", 
    "site_access_was_provided_as_expected":"Yes", 
    "energy_manager":"Aaaa", 
    "duration":0, 
    "start_time":"2017-08-03T12:12:28.736Z", 
    "datastream":"GENERIC", 
    "addressing_percent_complete":"92", 
    "password":"pwd", 
    "template_name":"Daily Field Report", 
    "user_id":11, 
    "site_access_notes":"testing", 
    "startup_percent_complete":"65", 
    "energy_manager_ip":"0:0:0:0", 
    "was_site_access_granted_on_time":"Yes", 
    "departure_time":"9", 
    "username":"[email protected]" 
} 

答えて

0

うーん、あなたは簡単なdelete機能を呼び出すことによってそれを行うことができます。それだけでも1ユーザー、および1つの仕事、1 data_pointsになる場合

var myObject = { 
    "jobs": [{ 
     "job_id": 10, 
     "users": [{ 
      "user_id": 11, 
      "data_points": [{ 
       "efficiency": "good", 
       "form_id": "2", 
       "instrument_type": "plug", 
       "background_value": "7", 
       "surveyed_item_id": "100", 
       "duration": 0, 
       "start_time": "2017-07-20T04:04:43.000Z", 
       "datastream": "GENERIC", 
       "username": "[email protected]" 
      }] 
     }] 
    }] 
}; 

for (let i = 0; i < myObject.jobs.length; i++){ 
    for (let j = 0; j < myObject.jobs[i].users.length; j++){ 
     for (let g = 0; g < myObject.jobs[i].users[j].data_points.length; g++){ 
      delete myObject.jobs[i].users[j].data_points[g].username; 
      delete myObject.jobs[i].users[j].data_points[g].datastream; 
      delete myObject.jobs[i].users[j].data_points[g].start_time; 
     } 
    } 
} 

を、あなたはそのようにSTHを使用することができます。

delete myObject.jobs[0].users[0].data_points[0].username; 
delete myObject.jobs[0].users[0].data_points[0].datastream; 
delete myObject.jobs[0].users[0].data_points[0].start_time; 

------ EDIT

あなたはすべてのパラメータを持つ古いオブジェクトを保存したい場合は、削除する前に、あなたのオブジェクトのクローンを作成することができます。 Object.clone関数を使用するか、単純な使用JSON.parse(JSON.stringify(object))(例で使用します)を使用することができます。あなたは使用することはできません簡単なvar newObj = object(あなたがオブジェクトを変更します、NEWOBJも変更される場合)

formSummery = 
{ 
    "planned_activity":"Yes", 
    "ingest_time":"2017-08-03T12:12:32.456Z", 
    "arrival_time":"8", 
    "device_id":"26e09c88237d5342", 
    "user_name":"ABC","form_id":"1", 
    "firmware_version":"2.2", 
    "site_access_was_provided_as_expected":"Yes", 
    "energy_manager":"Aaaa", 
    "duration":0, 
    "start_time":"2017-08-03T12:12:28.736Z", 
    "datastream":"GENERIC", 
    "addressing_percent_complete":"92", 
    "password":"pwd", 
    "template_name":"Daily Field Report", 
    "user_id":11, 
    "site_access_notes":"testing", 
    "startup_percent_complete":"65", 
    "energy_manager_ip":"0:0:0:0", 
    "was_site_access_granted_on_time":"Yes", 
    "departure_time":"9", 
    "username":"[email protected]" 
} 

newForm = JSON.parse(JSON.stringify(formSummery)); 


delete newForm.username; 
delete newForm.datastream; 
delete newForm.start_time; 

NEWFORMオブジェクトが論文parameteresせずに新しいオブジェクトを格納され、formSummeryが古いオブジェクト(すべてのパラメータ)を格納します。

私はそれが役に立ちそうです。

+0

ありがとうございます!それは私のために働いています – Rahul

+0

しかし、問題はすべてのオブジェクトからプロパティを削除しています。 – Rahul

+0

私は同じプロパティのために2つの異なるオブジェクトを持っているので、あるオブジェクトからいくつかのプロパティだけを削除したい。 – Rahul

関連する問題