我正在嘗試使用以下函式將 javascript 陣列分成至少 5 個塊。x 和 z 應該只有 5 或小于 5。我也在嘗試使用日期條件。我已經嘗試使用下面的內部 x 和 z 函式,但它沒有作業,所以尋找一些有關正確功能的幫助。
樣本輸入
"data": [
{
"date": "01-18-2022",
"x": [
60,
59,
58,
57,
56,
55,
54,
53,
52,
51,
50,
49,
48,
47,
46
],
"z": [
61,
60,
59,
58,
57,
56,
55,
54,
53,
52,
51,
50,
49,
48,
47
]
}
],
預期產出
"data": [
{
"date": "01-18-2022",
“x: [
60,
59,
58,
57,
56,
],
“Z”: [
61,
60,
59,
58,
]
},
{
"date": "01-18-2022",
“x: [
55,
54,
53,
52,
51,
],
“Z”: [
55,
54,
53,
52,
51,
]
}, {
"date": "01-18-2022",
“x: [
50,
49,
48,
47
],
“Z”: [
50,
49,
48,
47
]
}
]
我將此函式用于內部陣列,但它不起作用。
function* generateChunks(array, size) {
let start = 0;
while (start < array.length) {
yield array.slice(start, start size);
start = size;
}
}
uj5u.com熱心網友回復:
試試這個:
let data = [
{
"date": "01-18-2022",
"x": [
60,
59,
58,
57,
56,
55,
54,
53,
52,
51,
50,
49,
48,
47,
46
],
"z": [
61,
60,
59,
58,
57,
56,
55,
54,
53,
52,
51,
50,
49,
48,
47
]
}
];
function arrayChunk(dataItem, chunkSize){
let res = []
for (let i = 0; i < dataItem.x.length; i = chunkSize){
res.push({
date: dataItem.date,
x: dataItem.x.slice(i, i chunkSize),
z: dataItem.z.slice(i, i chunkSize),
})
}
return res
}
data = data.map(dataItem => arrayChunk(dataItem, 5)).flat();
console.log(data);
uj5u.com熱心網友回復:
也許這有幫助:
dataJSON = {
"date": "01-18-2022",
"x": [
60,
59,
58,
57,
56,
55,
54,
53,
52,
51,
50,
49,
48,
47,
46
],
"z": [
61,
60,
59,
58,
57,
56,
55,
54,
53,
52,
51,
50,
49,
48,
47
]
}
function* chunkData(dataJSON, chunkSize){
let keys = Object.keys(dataJSON);
keys = keys.filter(x => x !== "date");
let maxSize = Math.max(keys.reduce(key => dataJSON[key].length));
start = 0;
while(start < maxSize){
let chunk = {
"date": dataJSON["date"]
};
for(let key of keys){
chunk[key] = dataJSON[key].slice(
start,
Math.min(
start chunkSize,
dataJSON[key].length
)
);
}
start = chunkSize;
yield chunk;
}
}
for(let x of chunkData(dataJSON, 5)){
console.log(x);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478671.html
標籤:javascript 数组
