Вы можете использовать reduce
, чтобы сгруппировать выбор и присвоение ES6 для доступа к требуемым переменным:
const {
code,
name: _name,
description,
size,
printarea,
colours,
comments
} = [...document.querySelectorAll('.ty-table')].reduce((all, table) => {
[...table.getElementsByTagName('tr')].forEach(tr => {
const [key, val] = [...tr.getElementsByTagName('td')].map(n => n.innerText.trim());
const keyLc = key.replace(/ /g,'').toLowerCase();
if (!all.hasOwnProperty(keyLc)) {
all[keyLc] = [];
}
all[keyLc].push(val);
})
return all;
}, {});;
console.log(code);
console.log(_name);
console.log(description);
console.log(size);
console.log(printarea);
console.log(colours);
console.log(comments);
Note
что у нас есть _name
псевдоним для name
, поскольку name
является зарезервированным ключевым словом JS, а методы доступа с name
преобразуют все структуры данных в строку:
var name = [1,2,3];
typeof name === 'string' // true
Общая практика заключается в том, чтобы не использовать name
в качестве имени переменной.