2017-01-09 4 views
0

オブジェクトを作成しました。しかし、その中にいくつかの値を設定しようとすると、エラーがスローされます。 objのあなたの定義は空のオブジェクトであるまあnodejのオブジェクトに新しいフィールドを追加するときの型エラーの解決方法

function CheckStatus(oldJob, newJob) { 
    var obj = {}; 
    if(newJob && newJob.Status) { 
    if (oldJob.Status.total !== newJob.Status.total) { 
     obj.Status.total = newJob.Status.total; 
    } 
    if (oldJob.Status.charge_description && oldJob.Status.charge_description !== newJob.Status.charge_description) { 
     obj.Status.charge_description = newJob.Status.charge_description; 
    } 
    } 
} 

TypeError: Cannot set property 'total' of undefined

答えて

2

: 以下のコードを参照してください。だから、obj.Status.totalを設定する前に、あなたはそうのように、元の宣言のいずれかで、obj.Statusを定義する必要があります。そうのような

var obj = { Status: {} }

以降:

obj.Status = {}

0

あなたのOBJ変数は、プロパティの状態NOSています!あなたは前に彼の本当の構造を作り出さなければなりません!

使用lodashの_.set:

const _ = require('lodash'); 
 

 
function CheckStatus(oldJob, newJob) { 
 
    let obj = {}; 
 
    if (newJob && newJob.Status) { 
 
     if (oldJob.Status.total !== newJob.Status.total) { 
 
      _.set(obj, 'Status.total', newJob.Status.total); 
 
     } 
 
     if (oldJob.Status.charge_description && (oldJob.Status.charge_description !== newJob.Status.charge_description)) { 
 
      _.set(obj, 'Status.charge_description', newJob.Status.charge_description); 
 
     } 
 
    } 
 
}

FYIそれが変異したオブジェクトではない新しいオブジェクトを返します! ;)

関連する問題