gpt4 book ai didi

javascript - 使用 Javascript 将连续的元素组合在一起

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:38 26 4
gpt4 key购买 nike

我有一个这样的元素数组:

messages[i],其中 messages[i] 可能仅针对 i 的某些值存在。例如,messages[0]messages[2] 可能存在,但 messages[1] 可能不存在。

现在我想将具有连续索引的元素组合在一起,例如,如果存在消息的索引是:

2、3、4、5、8、9、12、13、14、15、16、17、20

我想像这样对它们进行分组:

2、3、4、5

8, 9

12, 13, 14, 15, 16, 17

20

使用 Javascript 这样做的有效方法是什么?

编辑:

for (i = 0; i < messages.length; i++) {
if (messages[i].from_user_id == current_user_id) {
// group the continuous messages together
} else {
//group these continuous messages together
}
}

最佳答案

你可以使用一个必须递增的计数器变量,并且索引和连续元素之间的差异是相同的,将它们分组在一个临时数组中。如果两个连续数组元素的差异不同,则必须将临时元素移动到 result 并且必须为临时数组分配一个新的数组对象。

var array = [2, 3, 4, 5, 8, 9, 12, 13, 14, 15, 16, 17, 20];

var result = [], temp = [], difference;
for (var i = 0; i < array.length; i += 1) {
if (difference !== (array[i] - i)) {
if (difference !== undefined) {
result.push(temp);
temp = [];
}
difference = array[i] - i;
}
temp.push(array[i]);
}

if (temp.length) {
result.push(temp);
}

console.log(result);
# [ [ 2, 3, 4, 5 ], [ 8, 9 ], [ 12, 13, 14, 15, 16, 17 ], [ 20 ] ]

关于javascript - 使用 Javascript 将连续的元素组合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22627125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com