[{
"project_name": "test",
"status": "High"
},{
"project_name": "test",
"status": "Critical"
},{
"project_name": "test",
"status": "Critical"
}]
我對 Object.entries 進行了很多嘗試,但無法達到我想要的結果。
預期產出
[{
project_name: "test",
value: 1,
status: "High",
},
{
project_name: "test",
value: 2,
status: "Critical",
}]
我想要做的不是添加一個值,而是考慮第一個陣列中具有相同狀態值的更多物件。我想對它們進行計數和分組。
uj5u.com熱心網友回復:
- 創建一個臨時物件來保存更新的資訊。
- 回圈遍歷陣列,并為每個物件從
product_name和 中創建一個定制鍵status。 - 如果臨時物件上不存在該鍵,則從當前物件創建一個新物件,并添加一個 value 屬性。
- 將值增加一。
- 最后,您可以使用
Object.values從臨時陣列中獲取新物件。
const data=[{project_name:"test",status:"High"},{project_name:"test",status:"Critical"},{project_name:"test",status:"Critical"}];
const temp = {};
for (const obj of data) {
const { project_name, status } = obj;
const key = `${project_name}-${status}`;
temp[key] ??= { ...obj, value: 0 };
temp[key].value = 1;
}
console.log(Object.values(temp));
附加檔案
邏輯無效賦值
傳播語法
模板/字串文字
您也可以使用reduce. 相同的原則適用(但在這里您只是為累加器初始化一個空物件,并將其傳遞給陣列的下一次迭代),盡管如果您是 JS 新手,回圈可能更容易理解。
const data=[{project_name:"test",status:"High"},{project_name:"test",status:"Critical"},{project_name:"test",status:"Critical"}];
const out = data.reduce((acc, obj) => {
const { project_name, status } = obj;
const key = `${project_name}-${status}`;
acc[key] ??= { ...obj, value: 0 };
acc[key].value = 1;
return acc;
}, {});
console.log(Object.values(out));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481237.html
標籤:javascript 数组 json 目的
上一篇:如何在Javascript中使用const陣列在陣列之間添加元素
下一篇:在物件陣列中映射物件陣列
