2016-11-02 1 views
0

以下はObject.assign(initalPlan、data)という2つのオブジェクトですが、データには含まれていないフィールドも削除します。オブジェクトの割り当てを使用して異なるプロパティを削除する-ES6

const initialPlan = { 
     default_plan: false, 
     external_plan_id: fakeString, 
     public_available: true, 
     name: fakeString, 
     price: fakeNumber, 
     pricing_period: fakeNumber, 
     pricing_period_unit: fakeString, 
     space_limit: fakeNumber, 
     staff_max_limit: fakeNumber, 
     staff_min_limit: fakeNumber, 
     trial_period: fakeNumber, 
     trial_period_unit: fakeString, 
    }; 

およびその他のオブジェクト:

const data = { 
      external_plan_id: plan.external_plan_id, 
      space_limit: plan.space_limit, 
      staff_min_limit: plan.staff_min_limit, 
      staff_max_limit: plan.staff_max_limit, 
      file_storage_limit: plan.file_storage_limit, 
      file_storage_limit_unit: plan.file_storage_limit_unit, 
      default_plan: plan.default_plan, 
     }; 

任意のアイデア?

+6

データの一部ではないすべてのキーを削除する必要がありますソースのプロパティのターゲットへの浅いコピーです。おそらく、プロパティを反復して手動でコピーする必要があります。 – adeneo

+0

Object.assign関数をオーバーライドして、必要な処理を行うことができます。しかし、間違いなくあなたはすべきではありません。あなたは何をすべきですか?hasOwnPropertyを使う関数を書いていますか? copyValue:null –

+1

あなたは絶対に* initialData'プロパティを更新しますか?新しいオブジェクトを割り当てた場合、[pick](http://stackoverflow.com/questions/25553910/one-liner-to-take-some-properties-from-object-in-es-6)関数を使用することができます。 – CodingIntrigue

答えて

0

はあなたdatainitialPlanオブジェクトを取得したら、あなたはdataに存在しないinitialPlanのプロパティを削除するには、このような何かを行うことができます。次に、Object.assign(initialPlan, data)を使用できます。

const dataKeys = Object.keys(data); 
const initialPlanKeys = Object.keys(initialPlan); 

initialPlanKeys.forEach(k => { 
    if (!dataKeys.includes(k)) 
    delete initialPlan[k]; 
}); 
+0

@torazaburo 'Object.assign(initialPlan、data)'彼が使用しようとしていたことをOPが述べたので、コードブロックには含めなかった。 – Gavin

-1

あなたはすべて、Object.assignを使用して、あなたは、 `object.assign`プロパティを削除しないことはできません

const initialPlan = { 
 
    key1: 1, 
 
    key2: 2, 
 
    key3: 3 
 
} 
 
const data = { 
 
    key1: 10, 
 
    key2: 0 
 
} 
 

 
Object.assign(initialPlan, data); 
 
Object.keys(initialPlan).forEach(function(key){ 
 
    if(!data.hasOwnProperty(key)) delete initialPlan[key]; 
 
}); 
 
console.log(initialPlan)

+0

「initialPlan」から**すべての**キーを削除して始めないのはなぜですか? –

+0

@ torazaburoそれは私の初期の考えだったが、彼はその 'initialPlan'を使用することができ、' data'はそれを更新するだけかもしれない – taguenizy

関連する問題