2015-07-28 2 views
-1

Я пытаюсь разбить мою строку из массива на отдельные слова, а затем вставить их в новый массив, чтобы напечатать их из этого массива в виде отдельных слов. Как мне это сделать? То, что у меня до сих пор, ниже, но я думаю, что мои методы вызываются в функции в неправильном порядке.String splitting then pushing to array

var myArray = ["John Doe", "johnDoe"]; 
var cutName = function(x) { 
    var cutArray = []; 
    cutArray.push(x.split()); 
    return cutArray; 
}; 
print cutName(myArray[0]); 

Как я могу улучшить свой код?

+3

Зачем вам нужно нажимать их на другой массив? Почему бы просто не вернуть 'x.split()'? – Barmar

+1

Не могли бы вы показать результат, который вы ожидали от своего кода? –

+5

@dognose Code Review следует использовать только с правильным кодом. – Barmar

ответ

1

Я думаю, что вы имели в виду сделать разделилась элементы в массиве на основе белого пространства, разделяя их, и вы забыли добавить " " аргумент к вашему split()

var myArray = ["John Doe", "johnDoe"]; 
 
var cutName = function(x) { 
 
    var cutArray = x.split(" "); //place demimeter here 
 

 
    return cutArray; 
 
}; 
 
var arr = cutName(myArray[0]); 
 

 
for (var i = 0; i < arr.length; i++) { 
 
    console.log(arr[i]); 
 
    alert(arr[i]); 
 
}

Это поделит ваш исходный аргумент cutName, первый элемент в myArray"John Doe", и превратите его в массив, элементы которого будут разделены одним пробелом. Затем он прокручивается и распечатывает каждый элемент в новом массиве.

Входной сигнал: myArray[0] ->"John Doe"

Превращается: ["John", "Doe"]

выход: Строка 1: John

Строка 2: Doe

+0

Спасибо, Абдул. Мне все еще трудно точно узнать, как я хочу задать свой вопрос или где я потерялся в том, что я только что узнал, но вы ударили ноготь прямо по голове. Это было прекрасно. –

0

Вы в конечном итоге возвращаете массив внутри массива, что, вероятно, не то, что вы ожидаете.

Результат x.split()уже массив (например, ['John', 'Doe']), то вы толкаете его в cutArray, заканчиваясь с [['John', 'Doe']], который, вероятно, почему вы смущены. Примечание: опускание параметра separator в split() будет возвращать массив, в котором единственным элементом является исходная строка, что может способствовать неожиданным результатам).

Функция cutName - это длинный способ просто позвонить x.split(' '). Ваш код может быть сокращен до:

console.log(myArray[0].split(' ')); 

Не указывая ожидаемый результат, я не уверен, что еще вы хотели, чтобы ваш код делал.

0

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

var myArray = ["John Doe", "johnDoe"]; 
var newArray = (myArray.map(function(x) {return x.split(' ')})).join().split(","); 
console.log(newArray); 

Выход

[ 'John', 'Doe', 'johnDoe' ] 
0

Я не совсем уверен, что вы после этого, но это может работать для вас:

var separateWords = myArray.map(function(word) { 
    return word.split(' '); // note the empty space 
}); 

// output [ [ 'John', 'Doe' ], [ 'johnDoe' ] ] 

Кроме того, чтобы получить его в одном массиве :

separateWords = separateWords.reduce(function(a,b) { 
    return a.concat(b); 
}) 

// output [ 'John', 'Doe', 'johnDoe' ] 
0

функция сплит нуждается в разделитель показ, по которому символ, если строка будет разбита. Таким образом, ваш код должен быть:

var myArray = ["John Doe", "johnDoe"]; 
var cutName = function(x) { 
    var cutArray = []; 
    cutArray.push(x.split("")); 
    return cutArray; 
}; 
document.body.innerHTML=cutName(myArray[0]);