You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何将时间戳转秒函数应用于嵌套数组并保留结构

步骤1:修正时间转秒的转换函数

你原有convertor存在逻辑错误,会导致计算结果不符合预期:

  • 小时位应该乘以3600(60分钟*60秒),不是60
  • parseInt包裹位置错误,且直接对小数位执行parseInt会丢失毫秒精度
  • 多余的减1.2操作也会导致结果偏差

修正后的函数:

const convertor = (timeStr) => {
  const [hours, minutes, seconds] = timeStr.split(':').map(Number);
  return hours * 3600 + minutes * 60 + seconds;
};
// 测试:输入'00:01:02.330' 输出 62.33,符合要求

注意:原数组中的时间值需要用引号包裹为字符串格式,否则会被JS识别为非法数字抛出语法错误。

步骤2:递归处理任意深度的嵌套数组

要完全保留原数组嵌套结构,编写递归遍历函数即可:

// 原嵌套数组(已补充字符串引号)
const nestedArray = [[['00:01:02.330'],['00:01:04.550'],['01:11:02.330']],[['00:01:02.330'],['00:01:02.330']],[['00:01:02.330'],['00:01:02.330'],['00:01:02.330']]];

// 递归转换函数
const convertNestedArray = (arr) => {
  return arr.map(item => {
    // 当前项为数组则继续递归
    if (Array.isArray(item)) {
      return convertNestedArray(item);
    }
    // 非数组项直接调用转换函数
    return convertor(item);
  });
};

const result = convertNestedArray(nestedArray);
console.log(result);

也可以用简化的一行箭头函数实现:

const convertNested = arr => arr.map(i => Array.isArray(i) ? convertNested(i) : convertor(i));
const result = convertNested(nestedArray);

输出结果示例

处理后完全保留原嵌套结构,结果如下:

[
  [ [ 62.33 ], [ 64.55 ], [ 4262.33 ] ],
  [ [ 62.33 ], [ 62.33 ] ],
  [ [ 62.33 ], [ 62.33 ], [ 62.33 ] ]
]

内容的提问来源于stack exchange,提问作者moemous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:36:03