Рейтинг:
5
Patrice T
Вот как я это вижу:
In= [-1,150,190,170,-1,-1,160,180];
// here you build a filtered array without the -1 numbers
Filtered= [150,190,170,160,180];
// here do a normal sort
Sorted= [150,160,170,180,190];
// here build the Out array by merging the -1 from In and the values from Sorted
Out= [-1,150,160,170,-1,-1,180,190];
[Обновление]
Хорошее начало, теперь вам нужно построить массив относительно позиций -1 в оригинале
function solution(x){
var arr = [];
for(var i = 0; i < x.length; i++){
if(x[i] != -1){
arr.push(x[i]);
}
}
arr = arr.sort(function(a,b){return a-b});
// here you need to build out array
// Just like you filtered x earlier, you need to loop again in x
// when you encounter a -1, push it in out array
// otherwise get next value from arr
return arr;
}
console.log(solution([-1,150,190,170,-1,-1,180,160]));
Suren97
Таким образом, я могу фильтровать массив и удалять только -1, а затем сортировать этот массив. но тогда как я могу поставить -1 числа после сортировки?
Patrice T
Нет, вы создаете новый массив, который заполняете значениями, отличными от -1, вы не касаетесь исходного массива.
Suren97
Что ты имеешь в виду? :(
Suren97
Слушай, я обновил свое решение, ты имеешь в виду вот так?
Suren97
В этом случае я получил сортированный массив, но теперь как я могу заполнить в нем числа -1?
Suren97
Какое из массива означает?
Patrice T
Это имя я дал результирующему массиву потому что мне нужно сохранить x и arr
Suren97
Я снова обновился, теперь вместо чего мне писать ? знак
Patrice T
вам нужна новая переменная, начинающаяся с 0, это будет индекс для arr
В чем дело ? вам нужно получить значение из arr, а затем увеличить индекс.
Suren97
Omg,,,наконец-то, большое вам спасибо :)
Patrice T
Теперь, когда у тебя есть решение, неужели все так сложно ? :)
Если мое решение (с комментариями) было полезным, вы можете принять его, оно закроет вопрос как решенный.
Вы также можете опубликовать свое собственное решение и принять его.