2017-03-21 7 views
2

私のデータはこのように見えます。ネストされた配列の特定の位置にプロパティと値をプッシュ

var data = [{ 
    "ID": 1, 
    "bankRepaidAmt": "", 
    "Tasks": [{ 
    ID: 5, 
    "chainPrefix": "1C", 
    "book": "Canada CRU", 
    }, ] 
}] 

は今、私はタスク '下' の値'13/1月17' 日にプロパティ 'bookedDate' を追加しようとしています。私は以下の構文で試しました。しかし、それはエラーをスローする。誰でも助けることができます。あなたは私が推測するオブジェクトにプロパティを追加しようとしているよう

data 
    .find(record => record.ID == '1') 
    .Tasks 
    .find(task => task.ID == '5') 
    .push({'bookedDate': '13/1/17'}); 
+0

それはどのようなエラーをスローしていますか? –

+0

「タスク*」の下で*が意味することを説明できますか? – Rajesh

+0

@torazaburo:プロパティプッシュがタスクタイプに存在しません。 –

答えて

1

var data = [{ 
 
    "ID"     : 1, 
 
    "bankRepaidAmt"  : "", 
 
    "Tasks"  : [{ 
 
        ID    : 5, 
 
        "chainPrefix"  : "1C", 
 
        "book"   : "Canada CRU", 
 
        }, 
 
        ] 
 
    }]; 
 
    
 
    var x = data.find(record => record.ID == '1').Tasks.find(task => task.ID == '5').bookedDate = '13/1/17'; 
 
    console.log(data);

+0

あなたは何を変更しましたか?作業コードを入れるだけでは不十分です。変更点についても説明してください。 OPだけでなく読者にもお答えしています – Rajesh

0

あなたはプッシュする必要はありません - この使用:

data.find(record => record.ID == '1').Tasks.find(task => task.ID == '5')['bookedDate'] = '13/1/17'; 

をデモは、以下を参照してください:

var data = [{ 
 
    "ID": 1, 
 
    "bankRepaidAmt": "", 
 
    "Tasks": [{ 
 
    ID: 5, 
 
    "chainPrefix": "1C", 
 
    "book": "Canada CRU", 
 
    }, ] 
 
}] 
 

 
data.find(record => record.ID == '1').Tasks.find(task => task.ID == '5')['bookedDate'] = '13/1/17'; 
 

 
console.log(data);

1

オブジェクトを返すので、Object.assign()を使用して新しいプロパティを追加できます。また、オブジェクトが見つかったかどうかを最初に確認してプロパティを追加することもできます。

var data = [{ 
 
    "ID": 1, 
 
    "bankRepaidAmt": "", 
 
    "Tasks": [{ 
 
    ID: 5, 
 
    "chainPrefix": "1C", 
 
    "book": "Canada CRU", 
 
    }] 
 
}] 
 

 
var obj = data.find(record => record.ID == '1').Tasks.find(task => task.ID == '5') 
 
if(obj) Object.assign(obj, {'bookedDate': '13/1/17'}) 
 

 
console.log(data)

関連する問題