javascript - 根据咨询时间拆分时间并将对象推送到数组 - Javascript
问题描述
我有这样的对象数组(假设大数组)
[
{
userID: '25634076cc1fccb0978ciug9f8f8b59cf7e6e0b0615d00de4df7e233bdb0d399',
consultationTime: 4200 // in seconds
},
{
userID: '48e69555d778f9b9a3a1d553b9c3b8f7dd6a3394ac82df1433b60a69c055d23d',
consultationTime: 198741 // in seconds
},
{
userID: 'a75d2f0a583b29ddba803af2a02ae1ee3b7b2c112fff8f41707aa9bb9aac9c90',
consultationTime: 10 // in seconds
}
];
要求:我需要将咨询时间转换为分钟。然后如果consultationTime 少于20 分钟,那么我需要将带有代码“11”的consultationTime 推送到billingDetails。如果consultationTime大于20分钟,则需要拆分剩余时间并将时间推送到编码“22”为对象数组。剩余时间属性将通过减去总时间来计算。
示例:对于 4200 秒(70 分钟),前 20 分钟转到代码 11,其余 50 分钟转到代码 22,因为对象数组包含第一个对象包含 20、下一个 20、下一个 10,如输出所示。
预期输出:
[
{
userID: '25634076cc1fccb0978ciug9f8f8b59cf7e6e0b0615d00de4df7e233bdb0d399',
billingDetails: [{
code: 11,
totalTime: 20 // first 20 minutes
remainingTime: 0 // 20 mins - totalTime
},
{
code: 22,
totalTime: 20
remainingTime: 0
},
{
code: 22,
totalTime: 20
remainingTime: 0
},
{
code: 22,
totalTime: 10
remainingTime: 10 (20 minutes - 10 minutes)
}
]
},
{... similarly for other users},
];
我很难得出相同的逻辑。所以任何帮助将不胜感激。
解决方案
const inputArray = [
{
userID: "25634076cc1fccb0978ciug9f8f8b59cf7e6e0b0615d00de4df7e233bdb0d399",
consultationTime: 4200,
},
{
userID: "48e69555d778f9b9a3a1d553b9c3b8f7dd6a3394ac82df1433b60a69c055d23d",
consultationTime: 198741,
},
{
userID: "a75d2f0a583b29ddba803af2a02ae1ee3b7b2c112fff8f41707aa9bb9aac9c90",
consultationTime: 10,
},
];
function splitTimeAndPush(inputArray) {
let outputArray = [];
inputArray.forEach((element) => {
let output = { userId: element.userID, billingDetails: [] };
let minutes = element.consultationTime / 60; // consultaionTime in minutes
for (let i = 0; i < minutes; i += 20) {
let bD = { code: "", totalTime: "", remainingTime: "" };
if (i === 0) {
bD.code = 11;
} else {
bD.code = 22;
}
bD.totalTime = minutes - i > 20 ? 20 : minutes - i;
bD.remainingTime = 20 - bD.totalTime;
output.billingDetails.push(bD);
}
outputArray.push(output);
});
return outputArray;
}
const sp = splitTimeAndPush(inputArray);
console.log(sp);
推荐阅读
- ruby-on-rails-6 - “ActionCable 连接未打开!在调用 `this.stimulate()` 之前,`this.isActionCableConnectionOpen()` 必须返回 true”
- django - React 前端 + 石墨烯 Django 后端 SPA 部署
- c++ - 在 Windows 中增加变量的全局内存
- java - 线程池中的时间片算法
- php - Monolog 无权在 OSX 上写入
- oracle-sqldeveloper - SQL dev 中未显示数据和断点窗口
- c++ - C++ 中的编译时调试
- python - Python - 如何从两列 .txt 文件中发布带有循环/读取值(有效负载)的请求?
- r - 如何从R中的时间序列数据集中提取每年
- python - 即使期望块在一次迭代中返回-1,Python中是否有任何方法可以完成for循环的所有迭代?