djamali
@djamali
web developer

Почему не работает код?

function order(words){
  var arr=words.split(" ");
  var new_arr=[];
  for(var i=0;i<arr.length;i++){
    for(var j=0;j<=9;j++){
      if(arr[i].indexOf(j)>-1){
      new_arr[i]=arr[arr[j]];
       console.log(arr[arr[j]])//вот эта строчка становится undefined
      }
    }
  }
}
order("world2 Hello1");
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
KazeZlat
@KazeZlat
Погромист-затейник
Может вы имели в виду
new_arr[j]=arr[i]; ?

Просто с чего бы arr[2] быть defined, если у вас массив ["world2", "Hello1"]?

А вообще цикл в данном случае не является лучшим решением, ибо есть функция sort, которая принимает callback:
var arr = ['world2', 'Hello1'];
arr.sort(function(a, b){
	return a.replace(/\D/g, '') - b.replace(/\D/g, '');
});
console.log(arr); // ["Hello1", "world2"]

/\D/g - регулярное выражение, означающее "Не цифра" с модификатором g - Global, который не останавливается после первого совпадения.
Функция replace ищет вхождения первого аргумента (строки или регулярного выражения) в строке и заменяет их вторым аргументом (строкой).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
djamali
@djamali Автор вопроса
web developer
function order(words){
  var arr=words.split(" ");
  var new_arr=[];
  for(var i=0;i<arr.length;i++){
    for(var j=1;j<=9;j++){
      if(arr[i].indexOf(j)>-1){
        //console.log(i,j,arr[i]);
        new_arr[j]=arr[i];
      }
    }
  }
return new_arr.join(" ").substr(1);

}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы