gpt4 book ai didi

javascript - 从排序的整数数组创建字符串范围

转载 作者:可可西里 更新时间:2023-11-01 02:21:19 26 4
gpt4 key购买 nike

我有以下排序的数字数组(它们可以重复,例如 21)

let a = [1,2,3,4,7,8,12,15,21,21,22,23]

并希望获得以下(已排序)具有范围的字符串数组

let r =["1-4","7-8","12","15","21-23"]

对于连续的数字 a,a+1,a+2,...,a+n=b w 必须创建字符串 "a-b"例如对于 6,7,8 我们想要得到 "6-8", 对于 "单独”的数字,我们只想得到那个数字,例如对于上面示例中的 12,我们得到“12”。

这是我的尝试,但我坚持了下来(并且头疼)

let a = [1,2,3,6,7,8,12,15,21,21,22,23];
let right=a[0];
let left=a[0];
let result=[];

for(let i=1; i<a.length; i++) {
for(let j=1; j<a.length; j++) {
if(a[i]<a[j])result.push(`${a[i]}-${a[j]}`);

}
}

console.log(JSON.stringify(result));

最佳答案

您可以将下一个预期值存储在闭包中并减少数组。

function getRanges(array) {
return array.reduce((l => (r, v, i, a) => {
if (l[1] > v) return r;
r.push(l[1] === v
? (r.pop(), l.join('-'))
: (l = [v, v]).slice(0, 1).toString()
);
l[1]++;
return r;
})([]), []);
}

console.log(getRanges([-3, -2, -1, 2]));
console.log(getRanges([1, 2, 3, 4, 7, 8, 12, 15, 21, 21, 22, 23]));

关于javascript - 从排序的整数数组创建字符串范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54205331/

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