javascript 在数字数组中隔离范围?

8hhllhi2  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(129)
    • 背景**

客户端应用程序有一个表,用户可以在其中选择行。每行都有一个关联的ID。如果用户要编辑行,则需要这些ID。这些ID必须通过URL的查询字符串传递。
每次选择或取消选择行时,都会创建字符串。

    • 目标**

通过将范围隔离在逗号分隔的数字字符串中并传递尽可能短的查询字符串,避免超过URL查询字符串的最大长度。[5,7,8,9,77,288]将变为"5:9,77,288"

tjvv9vkg

tjvv9vkg1#

这就是我得出的解决方案,它完全符合我的要求。
我总是乐于接受改进和建议。

var prevIter = null;
var nextInRange = 0;
var maxRange = null;
var lastIndex = selectedIDs.length - 1;

selectedIDs.forEach(function(item, index) {
    if(index === 0) {
        IDs = item;
    }
    else {
        if(item === nextInRange) {
            if(index === lastIndex) {
                IDs = IDs + ":" + item;
                maxRange = null;
            }
            else {
                maxRange = item;
            }
        }
        else {
            if(maxRange == null) {
                IDs = IDs + "," + item;
            }
            else {
                IDs = IDs + ":" + maxRange + "," + item;
                maxRange = null;
            }
        }
    }
    prevIter = item;
    nextInRange = prevIter + 1;
}

相关问题