Мне нужно определить, находится ли моя специальная строка в определенном диапазоне или нет?
Пример:
// 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
Правильн ли мой алгоритм? Они охватывают все возможные угловые дела?