在KUSTO中如何获取数组展开后元素索引并计算对应时间
数组展开并计算对应时间戳的实现方案
需求说明
给定一行数据,包含:
- 一个数组(数组第一个元素对应起始datetime)
- 一个时间间隔参数(单位:毫秒)
需要将数组展开,为每个元素获取索引,并计算出该元素对应的datetime。
示例实现(Python)
假设输入如下:
- 数组:
[100, 200, 300, 400] - 起始时间:
2024-05-20 12:00:00.000 - 时间间隔:
500毫秒
代码实现:
from datetime import datetime, timedelta # 输入参数 data_array = [100, 200, 300, 400] start_dt = datetime(2024, 5, 20, 12, 0, 0) interval_ms = 500 # 处理逻辑 expanded_result = [] for index, elem in enumerate(data_array): # 计算当前元素对应的时间:起始时间 + 索引 × 时间间隔 current_dt = start_dt + timedelta(milliseconds=index * interval_ms) expanded_result.append({ "索引": index, "数组元素": elem, "对应时间": current_dt.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] }) # 打印结果 for item in expanded_result: print(f"索引: {item['索引']}, 元素: {item['数组元素']}, 时间: {item['对应时间']}")
执行后输出:
索引: 0, 元素: 100, 时间: 2024-05-20 12:00:00.000 索引: 1, 元素: 200, 时间: 2024-05-20 12:00:00.500 索引: 2, 元素: 300, 时间: 2024-05-20 12:00:01.000 索引: 3, 元素: 400, 时间: 2024-05-20 12:00:01.500
示例实现(JavaScript)
同样的输入,用JavaScript实现:
// 输入参数 const dataArray = [100, 200, 300, 400]; const startDt = new Date('2024-05-20T12:00:00.000'); const intervalMs = 500; // 处理逻辑 const expandedResult = dataArray.map((elem, index) => { const currentDt = new Date(startDt.getTime() + index * intervalMs); return { 索引: index, 数组元素: elem, 对应时间: currentDt.toISOString().replace('T', ' ').slice(0, -1) }; }); // 打印结果 expandedResult.forEach(item => { console.log(`索引: ${item.索引}, 元素: ${item.数组元素}, 时间: ${item.对应时间}`); });
核心逻辑说明
- 用
enumerate(Python)或map的索引参数(JavaScript)直接获取每个元素的索引 - 时间计算规则:当前时间 = 起始时间 + 索引 × 时间间隔,因为第一个元素索引为0,对应起始时间,后续元素依次累加间隔
- 时间格式化时保留三位毫秒,匹配输入的时间间隔单位
内容的提问来源于stack exchange,提问作者Maghsad Iri
相关产品推荐
相关产品推荐

