const contentReview = [messagesData.querySelectorAll("info"), messagesData.querySelectorAll('date')];
contentReview.forEach((el, index) => {
console.log(el[index].textContent)
})
const info = messagesData.querySelectorAll('info');
const date = messagesData.querySelectorAll('date');
const length = Math.max(info.length, date.length);
const contentReview = Array.from({length}, (_, i) => ({
info: info[i],
date: date[i]
}));
Но нет никаких гарантий, что info и date будут одинакового размера. Я использовал Math.max для вычисления размера, но в случае не совпадения размеров, для меньшего случая возникнут undefined.const combine = (keys, values, defaultValue = () => null) =>
Array.from(
{ length: Math.max(...values.map(n => n.length)) },
(_, i) => Object.fromEntries(keys.map((k, j) => [
k,
values[j][i] ?? defaultValue(i, j, k),
]))
);
const keys = [ 'info', 'date' ];
// собираем элементы
const elements = combine(
keys,
keys.map(k => messagesData.querySelectorAll(`.${k}`)),
(i, j, k) => `элемент .${k} с индексом ${i} отсутствует`
);
// или, текстовое содержимое элементов
const texts = combine(
keys,
keys.map(k => Array.from(
messagesData.getElementsByClassName(k),
n => n.textContent
)),
);