2017-02-01 4 views
0

Я очень новичок в javascript, и я пытаюсь создать функцию, которая принимает смешанный ввод чисел, а затем перебирает массив, чтобы отсортировать их в два новых массива, чтобы я мог манипулировать ими дальше.Разбиение массива чисел и не чисел на два отдельных массива

Так что если у меня есть ввод 1, а, 2, б, 3, с, 4, д,

Хочу сделать два новых массивов 1,2,3,4 и а , b, c, d

до сих пор я был в состоянии разбить входную строку на запятой, так что теперь у меня есть

1a2b3c4d

все, что я должен быть в состоянии сделать сейчас просто отделите числа и не номера. Я думал об использовании двух петель: один, который проверяет

если (isNan.array [п] == True)

, а затем пытается найти способ, чтобы хранить буквы в переменную с помощью цикла, а затем используя другой цикл, чтобы сделать это для чисел, используя другую if-функцию.

Это как я должен это делать, и есть ли у вас какие-либо советы о том, как это сделать?

Edit:

теперь у меня есть этот код для проверки писем:

if (isNaN(splitResult[L])) { 
     for (i = 0; i < splitResult; i++) { 
      letterArray.add(splitResult[L]); 
      L = L + 1 

Когда я пытаюсь вывести результаты в поле подсчитывают буквы (с помощью переменной L), ничего не отображается , Я сомневаюсь, что я создал новый массив

+0

Почему цикл в два раза? Сделайте 'if (NaN ...) letterArray.add (array [i]); else numArray.add (array [i]); ' – Peter

+0

Вы должны попробовать сначала ... тогда, если он не работает как ожидаемый, задайте вопросы здесь, показывая код, который вы используете – charlietfl

+0

Используйте' arrayName.forEach (functionName) ' и для добавления нового элемента в массив в JavaScript вы используете «push», а не «add», поэтому это будет 'letterArray.push (item)'. вы можете проверить пример forEach здесь: http://www.w3schools.com/jsref/jsref_forEach.asp Также isNan (item) собирается вернуть логическое значение, поэтому вам не нужно приравнивать его к true или false, вы можете просто использовать 'if (isNan (item)) {}' – Girisha

ответ

0

Все, что вам нужно сделать, это петля через массив, вы можете использовать прототипы Array forEach. Или вы можете использовать обычный цикл for для проверки каждого элемента массива. Теперь вы можете проверить, есть ли каждый элемент isNaN, а затем соответствующим образом вставить в правый массив. Вы можете использовать фрагмент кода ниже

const yourArray = ['1','a','2','b','3','c','4','d']; 
const letterArray = []; 
const numberArray = []; 
yourArray.forEach((eachItem) => { 
    if(isNaN(eachItem)){ 
    letterArray.push(eachItem); 
    } else { 
    numberArray.push(eachItem); 
    } 
}); 

console.log(letterArray, numberArray); 
+0

Большое вам спасибо за ваш вклад, но я не знаю, что заменить «eachItem» в коде, который вы указали с помощью – Giverbud

+0

'eachItem' представляет каждое значение в массиве. Если вы используете цикл 'for'. Вы бы использовали 'yourArray [index]'. Метод 'forEach' может принимать функцию как свой параметр, а первый параметр, указанный в этой функции, представляет каждый элемент массива. Проверьте эту ссылку в ответе за более подробной информацией. –

+0

Хорошо, большое спасибо за вашу помощь. – Giverbud

0

только для завершения, разделить строку в массив первый :)

let yourString = '1a2b3c4d'; 
let yourArray = yourString.split(''); 
let letterArray = []; 
let numberArray = []; 
yourArray.forEach(item => { 
    if(isNaN(item) && typeof item === 'string'){ 
    letterArray.push(item); 
    } 
    else if(!isNaN(item) { 
    numberArray.push(item); 
    } 
}); 

console.log(letterArray, numberArray); 
+0

Так я делаю петлю первой, которая проходит через каждый пункт как этот для (; L Giverbud

+0

Не просто замените значение для yourString своей строкой ввода, и если она разделена на ',' просто замените 'yourString.split ('')' на 'yourString.split (',')' – cyrix

+0

forEach ist lopping over your splitted string (который теперь является массивом): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach – cyrix

Смежные вопросы