Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2018, 15:09
Новичок на форуме
Отправить личное сообщение для den2412 Посмотреть профиль Найти все сообщения от den2412
 
Регистрация: 11.02.2018
Сообщений: 6

Сделать из строки нумерованный массив
Всем Привет. Такая проблема: Есть файл txt который имеет вид
0 Денис
1 Вася
2 Лина
3 Джек
4 Оля
5 Люся
6 Настя
7 Джони
С помошью JS кода легко получается прочитать и вывести на экран как текст. Но никак не могу сделать из него массив, который имел бы такой же вид, т.е.
var array = [0 Денис
1 Вася
2 Лина
3 Джек
4 Оля
5 Люся
6 Настя
7 Джони];
Можно добавить разделители типа (, : или , главное чтобы при обращении array[4] показывало "Джек".

HTML:
<body>
<input type="file" id="file_load" multiple="">
<input type="button" value="READ" onclick="read()">
<input type="button" value="Show" onclick="show_arr()">
<div id="file_div"></div>
</body>

javascript:
var a;
function read() { // здесь проблем нет, файл читает и выводит
var file = document.getElementById('file_load').files[0];
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function () {
a = document.getElementById('file_div').innerHTML = reader.result;
};
}

function show_arr() {
var arr_a = a.split(b); // пытаюсь разбить массив на номер и пробел за ним
var b = i + ' ';
for (var i = 0; i < arr_a.length; i++) {
}
document.getElementById('show_sub').innerHTML = arr_a[2]; //ничего не выводиться
}
Как сделать чтобы выводило "Лина".
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2018, 15:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

den2412,
для этого не обязательно нумеровать строки в файле, достаточно чтобы каждое имя было с новой строки

var name = 'Денис\r\nВася\r\nЛина\r\nДжек';

alert(name.split(/\r?\n/)[1])


Перевод строки зависит от системы, это может быть \n или \r\n
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2018, 16:41
Новичок на форуме
Отправить личное сообщение для den2412 Посмотреть профиль Найти все сообщения от den2412
 
Регистрация: 11.02.2018
Сообщений: 6

Спасибо за столь быстрый ответ. Вот только что делать если файл содержит больше 1000 имен, не удалять же все цифры вручную.
Ответить с цитированием
  #4 (permalink)  
Старый 11.02.2018, 16:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от den2412
Вот только что делать если файл содержит больше 1000 имен
Файл в помойку и использовать базу, тогда и проблем не будет, и разбивать строки на массив не потребуется.
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2018, 16:51
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

<input type="file" id="file_load" multiple="">
<input type="button" value="READ" onclick="read()">
<input type="button" value="Show" onclick="show_arr()">
<div id="file_div"></div>
<div id="show_sub"></div>


<script>
var a;
function read() { // здесь проблем нет, файл читает и выводит
	var file = document.getElementById('file_load').files[0];
	var reader = new FileReader();
	reader.readAsText(file);
	reader.onload = function () {
		a = document.getElementById('file_div').innerHTML = reader.result;
	};
}

function show_arr() { 
	var a = document.getElementById('file_div').innerHTML;
	console.log(a);
	var arr_a = a.split('\n');
	document.getElementById('show_sub').innerHTML = arr_a[2];
}
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2018, 16:54
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

function parseNameList(string){
  var regexp = /^\s*(\d+)\s*(.*)\s*$/mg, match, result = [];
  while(match = regexp.exec(string))
    result[+match[1]] = match[2];
  return result
}

parseNameList(`
  0 Денис
  1 Вася
  2 Лина
  3 Джек
  4 Оля
  5 Люся
  6 Настя
  7 Джони
`)
__________________
29375, 35

Последний раз редактировалось Aetae, 11.02.2018 в 17:04.
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2018, 17:00
Новичок на форуме
Отправить личное сообщение для den2412 Посмотреть профиль Найти все сообщения от den2412
 
Регистрация: 11.02.2018
Сообщений: 6

Огромное спасибо!!! Чет даже и не подумал \n использовать. JavaScript неделю изучаю, опыта пока не хватает. Спасибо всем кто помогал. Тему можно закрыть
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить многомерный массив из этой строки imedia Элементы интерфейса 1 12.06.2015 15:30
Как получить из строки массив? optron Общие вопросы Javascript 1 28.01.2015 06:21
Как сделать перенос строки в listview jQuery Mobile gargon2013 jQuery 0 17.07.2013 11:49
Разбиение строки на десятимерный массив cbone Общие вопросы Javascript 7 23.11.2011 08:15
как запихнуть в массив оператор ? mitiya Общие вопросы Javascript 2 09.02.2011 18:57