![](/img/trans.png)
[英]Combine value with same date in multidimensional array in Javascript
[英]Combine multidimensional array, javascript
我正在嘗試做一些簡單的事情,但它不起作用。
我有兩個陣列,有這樣的結構;
total ->
[0]-> [Day: 2016-04-19, Total: 23]
[1]-> [Day: 2016-04-18, Total: 20]
failed ->
[0]-> [Day: 2016-04-19, Failed: 2]
[1]-> [Day: 2016-04-18, Failed: 0]
我正在嘗試將“失敗”鍵添加到“總”數組的值,但它不會咬,所以輸出看起來像這樣;
arr ->
[0]-> [Day: 2016-04-19, Total: 23, Failed: 2]
[1]-> [Day: 2016-04-18, Total: 23, Failed: 0]
...
我已經分配給var sql1和“失敗”的“總數”我已經分配給var sql2然后我嘗試了各種函數和for循環,如:
for (var i = 0; i < sql1.length; i++) {
sql1[i][2] = sql2[i][1];
}
然而sql1仍然是一樣的。 我究竟做錯了什么?
我也試過了
sql1[i].push(sql2[i][1]);
但這也不起作用。
您可以使用Array.prototype.concat()以這種方式連接多個數組:
var alpha = ['a', 'b', 'c'],
numeric = [1, 2, 3];
var alphaNumeric = alpha.concat(numeric);
console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]
但是,查看代碼時,您似乎正在使用Object搞亂數組。 您的代碼看起來應該更像這樣:
var total = [{
Day: "2016-04-19",
Total: 23
},
{
Day: "2016-04-18",
Total: 20
}];
var failed = [{
Day: "2016-04-19",
Total: 2
},
{
Day: "2016-04-18",
Total: 0
}];
console.log(total.concat(failed));
嘗試這個:
var total = [ {Day: '2016-04-19', Total: 23}, {Day: '2016-04-18', Total: 20} ], failed = [ {Day: '2016-04-19', Failed: 2}, {Day: '2016-04-18', Failed: 0} ]; // clone total array var arr = total.slice().map(function(obj) { var result = {}; result.Day = obj.Day; result.Total = obj.Total; return result; }); for (var i=0; i<failed.length; ++i) { for (var j=0; j<arr.length; ++j) { if (failed[i].Day == arr[j].Day) { arr[j].Failed = failed[i].Failed; } } } document.body.innerHTML = '<pre>' + JSON.stringify(arr, true, 4) + '</pre>';
如果Days總是在數組中的相同位置,您可以使用以下方法簡化代碼:
for (var i=0; i<failed.length; ++i) {
arr[i].Failed = failed[i].Failed;
}
您可以使用一些循環和一個哈希表來獲得正確的密鑰。
var data = { total: [{ Day: '2016-04-19', Total: 23 }, { Day: '2016-04-18', Total: 20 }], failed: [{ Day: '2016-04-19', Failed: 2 }, { Day: '2016-04-18', Failed: 0 }] }, grouped = []; Object.keys(data).forEach(function (k) { data[k].forEach(function (a) { var key = { total: 'Total', failed: 'Failed' }[k]; if (!this[a.Day]) { this[a.Day] = { Day: a.Day, Total: 0, Failed: 0 }; grouped.push(this[a.Day]); } this[a.Day][key] += a[key]; }, this); }, Object.create(null)); document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.