[英]Javascript dynamic object similar to PHP multidimensional associative array
您將如何在 Javascript 中動態添加/更新 object 的屬性?
例如,使用 PHP 的關聯數組,它超級簡單直觀。 例如
$test = [];
foreach ($data as $key => $value) {
...
$test[$year][$month] += $amount;
}
var_dump(json_encode($test));
我可以自動更新或向數組添加新項目。 我會得到類似的東西:
{
"2018": {
"5": 1110,
"6": 690
},
"2019": {
"9": 354,
"10": 531,
"12": 567
},
"2020": {
"1": 444,
"2": 100,
"4": 200,
"8": 1431
}
}
我試過,在 Javascript 沒有成功:
let test = {};
data.forEach(function (item, index) {
...
test[year] = {
[month]: amount
}
});
產生類似的東西:
{
"2018": {
"2": 1394000
},
"2019": {
"0": 3204000
},
"2020": {
"0": 1475000
}
}
月份被循環中的最后一個替換。 此外,我還無法弄清楚如何添加到現有金額。
我不想做一堆 ifs 來檢查 object 屬性是否已經存在等。
或者也許我以錯誤的方式接近這個?
編輯:
$data
或data
的示例,可以有重復的年份和月份。
[
{
"amount": 123,
"year": 2020,
"month": 5
},
{
"amount": 123,
"year": 2019,
"month": 3
},
...
]
下面是一個簡短的示例,說明如何通過循環遍歷數據數組來構建測試 object:
const data = [
{
"amount": 10,
"year": 2020,
"month": 5
},
{
"amount": 20,
"year": 2019,
"month": 5
},
{
"amount": 30,
"year": 2019,
"month": 6
}
]
let test = {};
data.forEach(item => {
if (!test[item.year]) {
test[item.year] = {};
}
test[item.year][item.month] = item.amount;
});
console.log(test)
這輸出:
{
2019: {
5: 20,
6: 30
},
2020: {
5: 10
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.