是否可以通過某些屬性的值過濾嵌套對象?(JS)

用戶15508209

我正在使用 JS、python 和來自開放 API 的數據開發我自己的項目。即使是像我這樣的新手,從 API 中獲取數據也不是那麼棘手。但是,我在將數據轉化為對我有用的信息時遇到了麻煩(像往常一樣)。

下面是我正在掙扎的一部分,

AA:array(60)
[
0:{A:2016-01-01, B:12}
1:{A:2016-02-01, B:122}
2:{A:2016-03-01, B:162}
3:{A:2016-04-01, B:129}
.
.
.
n:{A:20NN-NN-NN, B:923}
]

如您所見,它是一個包含許多對象的數組。每個對像都具有相同的屬性鍵 A,BA 是具有日期信息的文字,而 B 具有一些數值。我想做的是創建具有年份信息的新對象。換句話說,新對象具有所有相同的月份和日期信息,只有 A 中的年份不同。而 B 將是同年 B 的總和(對不起,我不擅長英語 ngl 的錯誤解釋)。所以上面的例子如下所示。

newAA: array(5)
[
0:{A:2016-01-01, B:numeric value(sum of all 2016's B in above example)}
1:{A:2017-01-01, B:numeric value(sum of all 2017's B in above example)}
2:{A:2018-01-01, B:numeric value(sum of all 2018's B in above example)}
3:{A:2019-01-01, B:numeric value(sum of all 2019's B in above example)}
4:{A:2020-01-01, B:numeric value(sum of all 2020's B in above example)}
]

老實說,這對我來說很棘手,我不知道如何處理它以使其成為我想要的如果您有這樣做的好主意,請告訴我,您的幫助將不勝感激。

謝謝閱讀!

馬吉德·巴達維

使用Array#reduce,您可以迭代數組,同時更新一個Mapwhere the yearis thekey和一個對像是 the value

結果將是這個 Map 的值,它是一個分組對象的列表,其中year包含A原始數組中的第一個和 total B

const AA = [ {A:'2016-01-01', B:12}, {A:'2016-02-01', B:122}, {A:'2016-03-01', B:162}, {A:'2016-04-01', B:129} ];

const res = [...
  AA.reduce((map, { A, B }) => {
    const [year] = A.split('-');
    const yearRecord = map.get(year);
    if(yearRecord) yearRecord.B += B;
    else map.set(year, { A, B })
    return map;
  }, new Map)
  .values()
];

console.log(res);

編輯:使用對象的相同解決方案:

const AA = [ {A:'2016-01-01', B:12}, {A:'2016-02-01', B:122}, {A:'2016-03-01', B:162}, {A:'2016-04-01', B:129} ];

const res = Object.values(
  AA.reduce((map, { A, B }) => {
    const [year] = A.split('-');
    const yearRecord = map[year];
    if(yearRecord) yearRecord.B += B;
    else map[year] = { A, B };
    return map;
  }, {})
);

console.log(res);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通過嵌套屬性獲取父對象

如何在javascript中過濾嵌套對象屬性並打印新對象

過濾對象的屬性以僅返回特定類型的屬性

通過刪除包含某些鍵的對象來過濾 json 文件

如何通過子 POJO 的屬性過濾複合多對多 POJO?

通過匹配 id 屬性過濾數組

按值過濾對象

如何使用計算屬性和道具過濾對象 [VueJS]

在 JavaScript 中通過鍵和嵌套值過濾對像數組

是否可以總結對像數組的屬性並根據另一個屬性對其進行過濾?

如何按值過濾嵌套的對像數組並獲取根對象

TypeScript 通過對象解構允許錯誤的屬性

Postgres 通過 X 遞增 JSONB 對象屬性

TS:通過變量獲取對象屬性的類型

為什麼通過克隆刪除張量對象屬性?

如何通過相同的屬性 unsing LINQ 組合集合中的對象?

如何在 GTK4 中通過對象 ID 應用 CSS 屬性?

過濾對象列表

過濾我需要檢查多個屬性以檢查它們是否包含數組中的字符串之一的對象

獲取/過濾與 Python 中的屬性/鍵匹配的對象列表中的第一項

Java Stream過濾不包含特定項目列表作為屬性的對象列表

Elasticsearch DSL,使用值列表過濾對象列表

從一組對像中提取屬性並通過 lodash 基於此屬性創建另一個對象?

如何通過在js中使用reduce返回數組中的對象來創建嵌套對象

通過函數返回時推斷出確切的對象屬性類型

無法從我通過 api 調用獲得的對象獲取位置屬性

為特定屬性 mapbox gl js 的多個值過濾要素層

如何通過另一個數組屬性組合和過濾數組屬性

如何通過在 Flutter 中作為參數傳遞給該對象的函數來更改對象的屬性