#arrays #angular #typescript #angular7
#массивы #angular #typescript #angular7
Вопрос:
Мне нужно объединить 2 массива, прочитанные из файла Excel, в двумерный массив, чтобы я мог поместить его как dataSource
из таблицы материалов.
У меня есть эти 2 массива, прочитанные из Excel с использованием XLSX
библиотеки:
reader.onload = (e) => {
const res = reader.result as string; // This variable contains your file as text
const lines = res.split('n'); // Splits you file into lines
let ids=[];
let name = [];
let array:any[][];
lines.forEach((line, index) => {
//console.log(line);
ids.push((line.split(',')[0]));
name.push(line.split(',')[1]);
array.push([ids, name])
});
console.log(array);
}
Но я продолжаю получать ошибку на console.log(array)
:
ОШИБКА TypeError: не удается прочитать свойство ‘push’ undefined
Редактировать:
Я изменил код на:
let name = [];
lines.forEach((line, index) => {
//console.log(line);
ids.push((line.split(',')[0]));
name.push(line.split(',')[1]);
array.push(ids, name)
});
console.log(array);
Результат был таким:
Но это не то, что мне нужно, потому что это не будет работать как источник данных в таблице материалов.
Комментарии:
1. У вашего массива нет значения, братан. Об этом прямо говорится.
2. Я думаю, вам следует назначить пустой массив для вашего массива следующим образом :
let array:any[]=[]
3. @stwilz пожалуйста, проверьте мою правку в конце вопроса
4. Просто ради правильных тегов — это чисто проблема с Javascript / Typescript. Не связано с angular или xlsx
5. @everyBit пожалуйста, проверьте мою правку в конце вопроса
Ответ №1:
Если я правильно понял вашу проблему … вот простой способ выполнить ваше требование.
let lines = ["1,xx","2,yy","3,zz"];
let name = [];
let array = [];
lines.forEach((line, index) => {
//console.log(line);
let obj = {
id : line.split(',')[0],
name : line.split(',')[1]
};
//ids.push((line.split(',')[0]));
//name.push(line.split(',')[1]);
array.push(obj)
});
console.log(array);