![](/img/trans.png)
[英]How to for each new object push it into array, with avoiding override? JavaScript
[英]How to push new property into each existing object within object array?
我正在嘗試從多維數組中檢索單個結果,然后將其推入對象數組中包含的每個對象中。
這是我的代碼;
var data = { "questions": ["Q1", "Q2", "Q3"], "details": [{ "name": "Alex", "values": [27, 2, 14] }, { "name": "Bill", "values": [40, 94, 18] }, { "name": "Gary", "values": [64, 32, 45] }] } var question = "Q1"; var singleResult = []; for (var i = 0; i < data.details.length; i++) { var qIndex = data.questions.indexOf(question) singleResult.push(data.details[i].values[qIndex]) } for (var i = 0; i < singleResult.length; i++) { data.details.push({ single: singleResult[i] }) } console.log(data.details)
如您所見,它正在將一個新對象推入數組,而我希望將單個結果推入現有的3個對象。
所以我的新數組應該看起來像;
[{
"name": "Alex",
"values": [27, 2, 14],
"single": 27
}, {
"name": "Bill",
"values": [40, 94, 18],
"single": 40
}, {
"name": "Gary",
"values": [64, 32, 45],
"single": 64
}]
我以為使用.concat
運行循環可以.concat
,但遺憾的是事實並非如此(至少對我而言!)。
希望一切順利,在此先感謝您的幫助/提前!
我會像這樣重構它:
var data = { "questions": ["Q1", "Q2", "Q3"], "details": [{ "name": "Alex", "values": [27, 2, 14] }, { "name": "Bill", "values": [40, 94, 18] }, { "name": "Gary", "values": [64, 32, 45] }] } var question = "Q1"; var qIndex = data.questions.indexOf(question) data.details.forEach((obj) => { obj.single = obj.values[qIndex]; }); console.log(data.details)
強調:
您可以使用indexOf()
獲取問題的索引,然后使用map()
獲取修改后的數組。
var data = {"questions":["Q1","Q2","Q3"],"details":[{"name":"Alex","values":[27,2,14]},{"name":"Bill","values":[40,94,18]},{"name":"Gary","values":[64,32,45]}]} var question = "Q1"; var qIndex = data.questions.indexOf(question); var result = data.details.map(function(e) { var o = JSON.parse(JSON.stringify(e)); o.single = e.values[qIndex]; return o; }); console.log(result);
var data = { "questions": ["Q1", "Q2", "Q3"], "details": [{ "name": "Alex", "values": [27, 2, 14] }, { "name": "Bill", "values": [40, 94, 18] }, { "name": "Gary", "values": [64, 32, 45] }] } var question = "Q1"; var singleResult = []; for (var i = 0; i < data.details.length; i++) { var qIndex = data.questions.indexOf(question) singleResult.push(data.details[i].values[qIndex]) } for (var i = 0; i < singleResult.length; i++) { data.details[i].single = singleResult[i]; } console.log(data.details)
var data = {"questions": ["Q1", "Q2", "Q3"],"details": [{"name": "Alex","values": [27, 2, 14]}, {"name": "Bill","values": [40, 94, 18]}, {"name": "Gary","values": [64, 32, 45]}]}, question = "Q1", qIndex = data.questions.indexOf(question); for (var i = 0, len = data.details.length; i < len; i++) { data.details[i].single = data.details[i].values[qIndex]; } console.log(data.details);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.