2016-11-04 5 views
3

Начать с массивом строк, некоторые из которых оснащен возврат каретки:Сплит элементов массива, содержащих возврат каретки

var valArray = ["Saab","Volvo","BMW\nHonda\nAudi","Mazda"]; 

То, что я хочу сделать, это избавиться от возврата каретки, разделив строку в качестве множества элементов как есть возврат каретки +1:

["Saab","Volvo","BMW","Honda","Audi","Mazda"]; 

Что я получаю с .split:

valArray.split("\n"); 
["Saab","Volvo",["BMW","Honda","Audi"],"Mazda"]; 

Любые предложения?

ответ

4

Карта элементы в массивы после расщепления возврата каретки, а затем сплющить массивы путем применения CONCAT:

var valArray = ["Saab","Volvo","BMW\nHonda\nAudi","Mazda"]; 
 

 
var result = [].concat.apply([], valArray.map(function(item) { 
 
    var items = item.split('\n'); 
 
    
 
    return items; 
 
})); 
 

 
console.log(result);

И еще один метод без цикла:

var valArray = ["Saab","Volvo","BMW\nHonda\nAudi","Mazda"]; 
 

 
var result = valArray.join(',').split('\n').join(',').split(','); 
 

 
console.log(result);

+0

Пробовал это, и она работает очень хорошо. Спасибо, что помогли простому единомышленнику! – Temperedsoul

+0

Добро пожаловать :) Я добавил еще один метод без цикла. –

1

Если вы хотите обновить существующий массив, то сделайте что-то вроде этого, используя Array#splice, Array#concat и простой цикл while.

var valArray = ["Saab", "Volvo", "BMW\nHonda\nAudi", "Mazda"]; 
 
var len = valArray.length; 
 

 
while (len--) { 
 
    [].splice.apply(valArray, [len, 1].concat(valArray[len].split('\n'))) 
 
} 
 

 
console.log(valArray)


Или, если вы хотите новый массив, то сделать это с помощью метода Array#push с помощью Function#apply метода.

var valArray = ["Saab", "Volvo", "BMW\nHonda\nAudi", "Mazda"]; 
 
var len = valArray.length, 
 
    res = []; 
 

 
while (len--) { 
 
    [].push.apply(res, valArray[len].split('\n')) 
 
} 
 

 
console.log(res)

+1

Более стильный цикл, который я пытался с помощью сплайсинга и concat. Благодаря! :) – Temperedsoul

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

  • Нет связанных вопросов^_^