gpt4 book ai didi

javascript - 我的算法正确吗? (值是否在范围内)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:42 25 4
gpt4 key购买 nike

我需要判断我的特殊字符串是否在指定范围内?

例子:

// range
[
"01-01-001-001",
"01-01-001-140"
]
// string
"01-01-001-001"

我们需要检测字符串是否在指定范围内?一个字符串表示一组由破折号(“-”)分隔的“级别”:

 4    3    2     1
01 - 01 - 001 - 001

4,3,2,1 是权重。 4 最高,1 最低。

下面是我的 isInRange 函数,用于检查:

 function isCodeInRange (code, range) {
var start = range[0].split('-'),
end = range[1].split('-'),
parts = code.split('-')
;

if (parts[0] !== start[0]) {
return false;
}


for (var i = 1, len = parts.length; i < len; i++) {
if (!(Number(parts[i]) >= Number(start[i]) && Number(parts[i]) <= Number(end[i]))) {
if ((Number(parts[i - 1]) >= Number(end[i - 1]))) {
return false;
}
}
}

return true;
}

console.log(isCodeInRange(
'01-01-140-01',
['01-01-138-01', '01-02-140-01']
))

如您所见,该检查的结果为真。一些测试:

console.log(isCodeInRange(
'01-02-140-01',
['01-01-138-01', '01-02-140-01']
)) // true

console.log(isCodeInRange(
'01-01-101-01',
['01-02-138-01', '01-03-140-01']
)) // false

console.log(isCodeInRange(
'01-01-001-01',
['01-01-001-01', '01-01-140-01']
)) // true

我的算法正确吗?它们是否涵盖了所有可能的极端情况?

最佳答案

您可以拆分字符串和映射数字并检查范围。

function isCodeInRange(values, ranges) {
ranges = ranges.map(s => s.split('-').map(Number));
return values
.split('-')
.map(Number)
.every((v, i) => ranges[0][i] <= v && v <= ranges[1][i]);
}

console.log(isCodeInRange('01-02-140-01', ['01-01-138-01', '01-02-140-01'])); // true not false
console.log(isCodeInRange('01-01-101-01', ['01-02-138-01', '01-03-140-01'])); // false
console.log(isCodeInRange('01-01-001-01', ['01-01-001-01', '01-01-140-01'])); // true

没有 every 和 ES5 的版本。

function isCodeInRange(values, ranges) {
var every = true;
ranges = ranges.map(function (s) { return s.split('-').map(Number); });
values
.split('-')
.map(Number)
.forEach(function (v, i) {
every = every && ranges[0][i] <= v && v <= ranges[1][i];
});

return every;
}

console.log(isCodeInRange('01-02-140-01', ['01-01-138-01', '01-02-140-01'])); // true not false
console.log(isCodeInRange('01-01-101-01', ['01-02-138-01', '01-03-140-01'])); // false
console.log(isCodeInRange('01-01-001-01', ['01-01-001-01', '01-01-140-01'])); // true

关于javascript - 我的算法正确吗? (值是否在范围内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58327176/

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