Массив Javascript - разделить

У меня есть текстовый файл, в котором есть данные по каждой строке. Это выглядит так:

number0;text0
number1;text1
number2;text2

..и так далее

Итак, я загрузил этот текстовый файл в переменную через xmlhttprequest, а затем преобразовал его в массив, используя разделение на "\ n", так что теперь результатом lineArray [0] будет number0; text0 .. И теперь мне нужно разделить это array снова, чтобы я мог использовать number0 и text0 отдельно.

Моя идея заключается в том, что я хочу получить text0, выполнив поиск number0, например, lineArray [i] [1] дает мне texti ..

Есть идеи, как действовать сейчас?

Спасибо

Просто разделите все массивы тоже точкой с запятой ..?

Teemu 14.06.2018 13:27

Вы уже разбили текст на «\ n». Почему бы вам не попробовать с ";" ?

Weedoze 14.06.2018 13:27

Я пробовал это, но это дало мне ошибку, метод нельзя использовать или что-то в этом роде ..

Tomáš Vítů 14.06.2018 13:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
76
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Просто снова используйте разделение с ";", например:

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 рад помочь

Ankit Agarwal 14.06.2018 13:40

Тогда используйте простую функцию. Проверьте мой обновленный ответ @ TomášVítů

Ankit Agarwal 14.06.2018 14:41

@ TomášVít рад помочь

Ankit Agarwal 14.06.2018 15:53

Преобразуйте массив в объект

Сделайте из него объект с другим разделением 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);

Использование forEach

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);

Другие вопросы по теме