[英]repeat objects inside the array n-times after certain index
when the similar circuit_id ends and the sets_rounds is greater than 1 eg 2 in our case.当相似的 circuit_id 结束并且 sets_rounds 大于 1 时,例如在我们的例子中为 2。 I want them to repeat after the last similar circuit_id.我希望他们在最后一个类似的电路 ID 之后重复。
from position 4th to 9th they have the same circuit_id and the rounds are 2 i want them to repeat once from position 10th.从第 4 位到第 9 位,它们具有相同的电路 ID,并且轮数为 2,我希望它们从第 10 位重复一次。
here is the array which i want to manipulate,这是我要操作的数组,
this is what i have这就是我所拥有的
[
{
"circuit_id": "226",
"sets_rounds": 1,
"video_name": "Jumping Jack",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/185/video/original/nog_105.mp4"
},
{
"circuit_id": "227",
"sets_rounds": 1,
"video_name": "Thruster",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/210/video/original/nog_131.mp4"
},
{
"circuit_id": "228",
"sets_rounds": 1,
"video_name": "Shuffle",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/109/video/original/nog_015.mp4"
},
{
"circuit_id": "230",
"sets_rounds": 1,
"video_name": "Side Lunge",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/174/video/original/nog_091.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Speed Skaters",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/121/video/original/nog_028.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Donkey kick up right",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2072/video/original/nog_263.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Squat jacks",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2065/video/original/nog_256.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Donkey kick up left",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2073/video/original/nog_264.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Broad Jumps",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/108/video/original/nog_014.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Cross Mountain Jack",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/209/video/original/nog_130.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Squat Knee Raise Twist",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/153/video/original/nog_063.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Reverse Marching Planks",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2243/video/original/nog_311.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Knees to stand up",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2060/video/original/nog_249.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Dish Bicycles",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2253/video/original/nog_321.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Triples (lunge - lunge - squat)",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1954/video/original/nog_236.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Knee Plank Side Touch",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/128/video/original/nog_036.mp4"
},
{
"circuit_id": "214",
"sets_rounds": 1,
"video_name": "Quadricep Stretch Alternating",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1031/video/original/stc_001.mp4"
},
{
"circuit_id": "215",
"sets_rounds": 1,
"video_name": "Seated Shoulder Stretch",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1050/video/original/stc_020.mp4"
},
{
"circuit_id": "222",
"sets_rounds": 1,
"video_name": "Standing Calf Stretch Alternating",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1033/video/original/stc_003.mp4"
},
{
"circuit_id": "225",
"sets_rounds": 1,
"video_name": "Lower Back Stretch Alternating",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1052/video/original/stc_022.mp4"
}]
this is what I want这就是我要的
[
{
"circuit_id": "226",
"sets_rounds": 1,
"video_name": "Jumping Jack",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/185/video/original/nog_105.mp4"
},
{
"circuit_id": "227",
"sets_rounds": 1,
"video_name": "Thruster",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/210/video/original/nog_131.mp4"
},
{
"circuit_id": "228",
"sets_rounds": 1,
"video_name": "Shuffle",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/109/video/original/nog_015.mp4"
},
{
"circuit_id": "230",
"sets_rounds": 1,
"video_name": "Side Lunge",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/174/video/original/nog_091.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Speed Skaters",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/121/video/original/nog_028.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Donkey kick up right",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2072/video/original/nog_263.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Squat jacks",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2065/video/original/nog_256.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Donkey kick up left",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2073/video/original/nog_264.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Broad Jumps",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/108/video/original/nog_014.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Cross Mountain Jack",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/209/video/original/nog_130.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Speed Skaters",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/121/video/original/nog_028.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Donkey kick up right",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2072/video/original/nog_263.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Squat jacks",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2065/video/original/nog_256.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Donkey kick up left",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2073/video/original/nog_264.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Broad Jumps",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/108/video/original/nog_014.mp4"
},
{
"circuit_id": "231",
"sets_rounds": 2,
"video_name": "Cross Mountain Jack",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/209/video/original/nog_130.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Squat Knee Raise Twist",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/153/video/original/nog_063.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Reverse Marching Planks",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2243/video/original/nog_311.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Knees to stand up",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2060/video/original/nog_249.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Dish Bicycles",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2253/video/original/nog_321.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Triples (lunge - lunge - squat)",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1954/video/original/nog_236.mp4"
},
{
"circuit_id": "229",
"sets_rounds": 1,
"video_name": "Knee Plank Side Touch",
"rest_sets": 15,
"rest_exercise": 15,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/128/video/original/nog_036.mp4"
},
{
"circuit_id": "214",
"sets_rounds": 1,
"video_name": "Quadricep Stretch Alternating",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1031/video/original/stc_001.mp4"
},
{
"circuit_id": "215",
"sets_rounds": 1,
"video_name": "Seated Shoulder Stretch",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1050/video/original/stc_020.mp4"
},
{
"circuit_id": "222",
"sets_rounds": 1,
"video_name": "Standing Calf Stretch Alternating",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1033/video/original/stc_003.mp4"
},
{
"circuit_id": "225",
"sets_rounds": 1,
"video_name": "Lower Back Stretch Alternating",
"rest_sets": 0,
"rest_exercise": 0,
"video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1052/video/original/stc_022.mp4"
}]
You could use reduce
with a couple of state variables to do this:你可以使用reduce
和几个状态变量来做到这一点:
const remapData = () => {
let circuitId;
let itemsToCopy = [];
return data.reduce((memo, item) => {
// Circuit id has changed, push all the current items to copy
if (circuitId !== item.circuit_id) {
memo.push(...itemsToCopy);
itemsToCopy = [];
}
memo.push(item);
circuitId = item.circuit_id;
if (item.sets_rounds === 2) {
itemsToCopy.push(item);
}
return memo;
}, []);
}
I would do this, creating an output array and fill it using a for-loop for every set_rounds.我会这样做,创建一个输出数组并为每个 set_rounds 使用 for 循环填充它。
const output = [];
for(let i=0; i<input.length; i++)
{
let times = input[i].sets_rounds;
for (let j = 0; j < times; j++) output.push(input[i]);
}
const input = [ { "circuit_id": "226", "sets_rounds": 1, "video_name": "Jumping Jack", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/185/video/original/nog_105.mp4" }, { "circuit_id": "227", "sets_rounds": 1, "video_name": "Thruster", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/210/video/original/nog_131.mp4" }, { "circuit_id": "228", "sets_rounds": 1, "video_name": "Shuffle", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/109/video/original/nog_015.mp4" }, { "circuit_id": "230", "sets_rounds": 1, "video_name": "Side Lunge", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/174/video/original/nog_091.mp4" }, { "circuit_id": "231", "sets_rounds": 2, "video_name": "Speed Skaters", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/121/video/original/nog_028.mp4" }, { "circuit_id": "231", "sets_rounds": 2, "video_name": "Donkey kick up right", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2072/video/original/nog_263.mp4" }, { "circuit_id": "231", "sets_rounds": 2, "video_name": "Squat jacks", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2065/video/original/nog_256.mp4" }, { "circuit_id": "231", "sets_rounds": 2, "video_name": "Donkey kick up left", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2073/video/original/nog_264.mp4" }, { "circuit_id": "231", "sets_rounds": 2, "video_name": "Broad Jumps", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/108/video/original/nog_014.mp4" }, { "circuit_id": "231", "sets_rounds": 2, "video_name": "Cross Mountain Jack", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/209/video/original/nog_130.mp4" }, { "circuit_id": "229", "sets_rounds": 1, "video_name": "Squat Knee Raise Twist", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/153/video/original/nog_063.mp4" }, { "circuit_id": "229", "sets_rounds": 1, "video_name": "Reverse Marching Planks", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2243/video/original/nog_311.mp4" }, { "circuit_id": "229", "sets_rounds": 1, "video_name": "Knees to stand up", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2060/video/original/nog_249.mp4" }, { "circuit_id": "229", "sets_rounds": 1, "video_name": "Dish Bicycles", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/2253/video/original/nog_321.mp4" }, { "circuit_id": "229", "sets_rounds": 1, "video_name": "Triples (lunge - lunge - squat)", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1954/video/original/nog_236.mp4" }, { "circuit_id": "229", "sets_rounds": 1, "video_name": "Knee Plank Side Touch", "rest_sets": 15, "rest_exercise": 15, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/128/video/original/nog_036.mp4" }, { "circuit_id": "214", "sets_rounds": 1, "video_name": "Quadricep Stretch Alternating", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1031/video/original/stc_001.mp4" }, { "circuit_id": "215", "sets_rounds": 1, "video_name": "Seated Shoulder Stretch", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1050/video/original/stc_020.mp4" }, { "circuit_id": "222", "sets_rounds": 1, "video_name": "Standing Calf Stretch Alternating", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1033/video/original/stc_003.mp4" }, { "circuit_id": "225", "sets_rounds": 1, "video_name": "Lower Back Stretch Alternating", "rest_sets": 0, "rest_exercise": 0, "video_url": "https://dcx828kjwpmk.cloudfront.net/switch-solutions/exercises/1052/video/original/stc_022.mp4" }]; const output = []; for(let i=0; i<input.length; i++) { let times = input[i].sets_rounds; for (let j = 0; j < times; j++) output.push(input[i]); } console.log(input); console.log(output);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.