我嘗試獲取元素陣列,并使用以下代碼獲取陣列:
const result = payload.map(({QUALITY, TEMPERATURE, SENSOR_READING_DATETIME, SOURCE_COMPONENT_ID, SENSOR_NAME, NEXT_OFFSET})=> ({
TELEMATICS: {
QUALITY,
TEMPERATURE
},
SOURCE_COMPONENT_ID,
SENSOR_NAME,
SENSOR_READING_DATETIME,
NEXT_OFFSET
}));
結果它看起來像這樣:
{
data": [
{
"TELEMATICS": {
"QUALITY": 91.98,
"TEMPERATURE": 20.5
},
"id": 118,
"SENSOR_READING_DATETIME": "2021-09-24T04:53:06.801Z",
"SOURCE_COMPONENT_ID": 1,
"SENSOR_NAME": "TD2",
"NEXT_OFFSET": 119
}
,
{
"TELEMATICS": {
"QUALITY": 91.98,
"TEMPERATURE": 20.5
},
"id": 119,
"SENSOR_READING_DATETIME": "2021-09-24T05:53:09.774Z",
"SOURCE_COMPONENT_ID": 1,
"SENSOR_NAME": "TD2",
"NEXT_OFFSET": 120
}
]
}
但是我試圖在元素之外獲取 NEXT_OFFSET,并且只獲取陣列的最后一條記錄。
它必須看起來像這個例子:
{
data": [
{
"TELEMATICS": {
"QUALITY": 91.98,
"TEMPERATURE": 20.5
},
"id": 118,
"SENSOR_READING_DATETIME": "2021-09-24T04:53:06.801Z",
"SOURCE_COMPONENT_ID": 1,
"SENSOR_NAME": "TD2"
}
,
{
"TELEMATICS": {
"QUALITY": 91.98,
"TEMPERATURE": 20.5
},
"id": 119,
"SENSOR_READING_DATETIME": "2021-09-24T05:53:09.774Z",
"SOURCE_COMPONENT_ID": 1,
"SENSOR_NAME": "TD2"
}
]
"NEXT_OFFSET": 120
}
我該怎么做,就像在示例中一樣?
uj5u.com熱心網友回復:
您可以使用Array.reduce累積結果并在點擊最后一項時添加額外的欄位。如果您將額外屬性的初始值設定為null它也會處理您的“無結果”情況。
一個簡化的版本是這樣的:
const payload = [
{ a: 1, b: 2 },
{ a: 5, b: 6 },
{ a: 10, b: 11 }
];
const res = payload.reduce(
(acc, { a, b }, index) =>
index === payload.length - 1
? { ...acc, data: [...acc.data, a],b }
: { ...acc, data: [...acc.data, a] },
{ data: [], b:null }
);
console.log(res);
對于您的示例,如果您要獲取成批的REQUEST_COUNT專案(例如 2000),它可能如下所示:
const res = payload.reduce(
(acc, { NEXT_OFFSET, ...item }, index) => {
const data = [...acc.data, item];
if (index < payload.length - 1) {
return { data };
} else {
const nextOffset =
payload.length < REQUEST_COUNT
? { NEXT_OFFSET: null }
: { NEXT_OFFSET
return {data, ...nextOffset}
}
},
{ data: [], NEXT_OFFSET: null }
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324347.html
標籤:javascript 数组 json 分页
