Jolt转换:如何按sequence字段提取最大序列值的元素
提取数组中sequence值最大的元素(不保证数组有序)
要从无序的collection数组里找出sequence值最大的元素,不同编程语言都有简洁的实现方式,下面举几个常用的例子:
JavaScript实现
利用数组的reduce方法遍历数组,每次对比当前元素与临时保存的最大元素的sequence值,最终保留sequence最大的元素:
const data = { "collection": [ { "sequence": 2, "value": "event2" }, { "sequence": 1, "value": "event1" }, { "sequence": 3, "value": "event3" } ] }; // 处理非空数组 if (data.collection.length > 0) { const maxSequenceItem = data.collection.reduce((maxItem, currentItem) => { return currentItem.sequence > maxItem.sequence ? currentItem : maxItem; }, data.collection[0]); console.log(maxSequenceItem); // 输出 { sequence: 3, value: "event3" } } else { console.log("数组为空,无法提取元素"); }
Python实现
直接使用内置的max函数,通过key参数指定按sequence字段比较:
data = { "collection": [ {"sequence": 2, "value": "event2"}, {"sequence": 1, "value": "event1"}, {"sequence": 3, "value": "event3"} ] } if data['collection']: max_sequence_item = max(data['collection'], key=lambda item: item['sequence']) print(max_sequence_item) # 输出 {'sequence': 3, 'value': 'event3'} else: print("数组为空,无法提取元素")
注意事项
- 上述代码默认数组非空,如果数组可能为空,一定要先做判空处理,避免抛出异常。
- 如果存在多个元素的
sequence值同为最大值,上述方法会返回第一个遇到的元素。
内容的提问来源于stack exchange,提问作者Linus Eriksson
相关产品推荐
相关产品推荐

