У меня есть текстовый файл, в котором есть данные по каждой строке. Это выглядит так:
number0;text0
number1;text1
number2;text2
..и так далее
Итак, я загрузил этот текстовый файл в переменную через xmlhttprequest, а затем преобразовал его в массив, используя разделение на "\ n", так что теперь результатом lineArray [0] будет number0; text0 .. И теперь мне нужно разделить это array снова, чтобы я мог использовать number0 и text0 отдельно.
Моя идея заключается в том, что я хочу получить text0, выполнив поиск number0, например, lineArray [i] [1] дает мне texti ..
Есть идеи, как действовать сейчас?
Спасибо
Вы уже разбили текст на «\ n». Почему бы вам не попробовать с ";" ?
Я пробовал это, но это дало мне ошибку, метод нельзя использовать или что-то в этом роде ..



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто снова используйте разделение с ";", например:
myVar = text.split(';');
как @Teemu, @Weedoze и @Alex сказали
Вам нужно сделать дополнительное разделение на ; как split(';'), чтобы lineArray[0][1], lineArray[1][1] и т. д. Давали вам text0, text1 и т. д.
var str = `number0;text0
number1;text1
number2;text2`;
var lineArray = str.split('\n').map(function(item){
return item.split(';');
});
console.info(lineArray);
console.info(lineArray[0][1]);
console.info(lineArray[1][1]);@ TomášVít рад помочь
Тогда используйте простую функцию. Проверьте мой обновленный ответ @ TomášVítů
@ TomášVít рад помочь
Сделайте из него объект с другим разделением String. Для этого вы можете использовать метод .reduce для преобразования массива строк в объект.
const strings = ['number0;text0', 'number1;text1', 'number3;text3', 'number4;text4'] ;
const obj = strings.reduce((acc,curr) => {
const [key, value] = curr.split(';');
acc[key] = value;
return acc;
}, {});
console.info(obj)Таким образом, вы можете получить доступ к text4 для покупки по телефону obj['number4'].
.reduceМетод уменьшения работает путем циклического перебора strings.
на каждом шаге acc - это аккумулятор: он содержит объект, который заполняется парами ключ / значение.
cur - текущий элемент в шаге
const [key, value] = curr.split(';') разделит строку на две строки и присвоит каждой отдельной переменной: key и value. Это называется деструктурирующее задание
затем я назначаю пару ключ / значение аккумулятор
метод .reduce вернет аккумулятор о своем состоянии на последнем шаге цикла
Что-то вроде этого может помочь:
let a = "number0;text0\nnumber1;text1\nnumber2;text2";
let lines = a.split('\n');
let vals = [];
for(let line of lines) {
vals.push(line.split(';'))
}
console.info(vals); // OutputПоследние четыре строки создают пустой массив и разделяются на ';' и добавьте это значение в массив vals. Я предполагаю, что у вас уже есть что-то вроде первых двух строк
Зная, что я опаздываю, все еще делаю взнос.
Как все говорили, разделите его снова.
let text = "number0;text0\nnumber1;text1\nnumber2;text2"
let data = text.split('\n');
var objects = {};
for (var i = 0; i < data.length; i++) {
let key = data[i].split(';')[0]; // Left hand value [Key]
let value = data[i].split(';')[1]; // Right hand value [Value]
// Add key and value to object
objects[key] = value;
}
// Access by property
console.info(objects);let text = "number0;text0\nnumber1;text1\nnumber2;text2"
let data = text.split('\n');
var objects = {};
data.forEach((elem) => {
let key = elem.split(';')[0]; // Left hand value [Key]
let value = elem.split(';')[1]; // Right hand value [Value]
objects[key] = value;
});
// Access by property
console.info(objects);
Просто разделите все массивы тоже точкой с запятой ..?