У меня есть требование, при котором я должен обратить массив, не изменяя индекс «#», представленного в массиве, как в примере ниже:
- Массив
[18,-4,'#',0,8,'#',5]
должен возвращать [5, 8, "#", 0, -4, "#", 18]
, здесь числа следует поменять местами, исключая '#', сохраняя при этом тот же индекс.
Я пытался получить правильный вывод, но он кажется неправильным не во всех сценариях ios: var arr = [18, -4, '#', 0,8, '#', 5]; // даем правильный результат var arr1 = [18, -4,0, '#', 8, '#', 5]; // результат неверный
var reverse = function(numbers, start, end){
var temp = numbers[start];
numbers[start] = numbers[end];
numbers[end] = temp;
}
var flip = function(numbers) {
var start = 0;
var end = numbers.length-1;
for(var i=0;i<parseInt(numbers.length/2);i++) {
if(numbers[i] === '#') {
start = i+1;
end = numbers.length - i - i;
reverse(numbers, start, end);
} else if (numbers[numbers.length - i - 1] === '#') {
start = i;
end = numbers.length - i - 2;
reverse(numbers, start, end);
} else {
reverse(numbers, start, end);
}
}
return numbers;
}
var arr = [18,-4,'#',0,8,'#',5];
var arr1 = [18,-4,0,'#',8,'#',5];
console.log(flip(arr));
console.log(flip(arr1));