有一個函式可以按鍵對一組物件進行分組。例如一個陣列:
data: [
{
CS_NAME: "AAA",
IS_MAIN: "Y",
WEBSITE_CREATE_DATE: "2021-06-01T15:50:37.687",
},
{
CS_NAME: "AAA",
IS_MAIN: "N",
WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07",
},
{
CS_NAME: "BBB",
IS_MAIN: "Y",
WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07",
},
{
CS_NAME: "BBB",
IS_MAIN: "N",
WEBSITE_CREATE_DATE: "2019-01-26T00:00:00",
},
{
CS_NAME: "CCC",
IS_MAIN: "Y",
WEBSITE_CREATE_DATE: "2019-01-26T00:00:00",
},
]
功能組:
groupBy(input, key) {
return input.reduce((acc, currentValue) => {
let groupKey = currentValue[key];
if (!acc[groupKey]) {
acc[groupKey] = [];
}
acc[groupKey].push(currentValue);
return acc;
}, {});
},
let obj = groupBy(data, "CS_NAME");
如何更改此函式,使其回傳一個物件陣列,每個物件都有兩個欄位:
{
title: "CS_NAME" // the key by which objects were grouped or any other property
content: {obj} // the whole object
}
例如,輸出應該是這樣的:
{
title: "AAA",
content: [
{
CS_NAME: "AAA",
IS_MAIN: "Y",
WEBSITE_CREATE_DATE: "2021-06-01T15:50:37.687",
},
{
CS_NAME: "AAA",
IS_MAIN: "N",
WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07",
},
],
}
uj5u.com熱心網友回復:
您可以groupBy如下更新您的函式以獲得所需的輸出。Object.entries再次使用和獲取當前輸出的輸出map到一個陣列。
const data = [ { CS_NAME: "AAA", IS_MAIN: "Y", WEBSITE_CREATE_DATE: "2021-06-01T15:50:37.687", }, { CS_NAME: "AAA", IS_MAIN: "N", WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07", }, { CS_NAME: "BBB", IS_MAIN: "Y", WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07", }, { CS_NAME: "BBB", IS_MAIN: "N", WEBSITE_CREATE_DATE: "2019-01-26T00:00:00", }, { CS_NAME: "CCC", IS_MAIN: "Y", WEBSITE_CREATE_DATE: "2019-01-26T00:00:00", }, ];
const groupBy = (input, key) => {
return Object.entries(
input.reduce((acc, currentValue) => {
let groupKey = currentValue[key];
if (!acc[groupKey]) {
acc[groupKey] = [];
}
acc[groupKey].push(currentValue);
return acc;
}, {})
).map(([title, content]) => ({ title, content }));
};
const obj = groupBy(data, "CS_NAME");
console.log(obj);
uj5u.com熱心網友回復:
您可以映射分組值并添加一些屬性。
const
groupBy = (input, key) => input.reduce((acc, currentValue) => {
(acc[currentValue[key]] ??= []).push(currentValue);
return acc;
}, {}),
data = [{ CS_NAME: "AAA", IS_MAIN: "Y", WEBSITE_CREATE_DATE: "2021-06-01T15:50:37.687" }, { CS_NAME: "AAA", IS_MAIN: "N", WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07" }, { CS_NAME: "BBB", IS_MAIN: "Y", WEBSITE_CREATE_DATE: "2021-08-03T12:02:58.07" }, { CS_NAME: "BBB", IS_MAIN: "N", WEBSITE_CREATE_DATE: "2019-01-26T00:00:00" }, { CS_NAME: "CCC", IS_MAIN: "Y", WEBSITE_CREATE_DATE: "2019-01-26T00:00:00" }],
result = Object
.entries(groupBy(data, "CS_NAME"))
.map(([title, content]) => ({ title, content }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417445.html
標籤:
下一篇:泛化積分模板引數
