Javascript从HTML中的表中获取数据,并构建包含表数据的对象数组

Javascript从HTML中的表中获取数据,并构建包含表数据的对象数组,javascript,html,Javascript,Html,我有一个HTML表,我需要定义一个函数,该函数应该从表中获取数据,并构建一个包含表数据的对象数组。在函数外部,我必须声明一个变量并分配函数返回的值 提前谢谢 HTML 名称 评级 复习 上下快速移动 5/5 这个产品太好了,我又买了5个! 简 4/5 物有所值。 大卫 1/5 到达时间:( Fiona 5/5 我喜欢! 迈克尔 3/5 没有达到预期。 JS 函数buildTableData(){ 让tbody=document.getElementsByTagName(“tbody”)[0]

我有一个HTML表,我需要定义一个函数,该函数应该从表中获取数据,并构建一个包含表数据的对象数组。在函数外部,我必须声明一个变量并分配函数返回的值

提前谢谢

HTML


名称
评级
复习
上下快速移动
5/5
这个产品太好了,我又买了5个!
简
4/5
物有所值。
大卫
1/5
到达时间:(
Fiona
5/5
我喜欢!
迈克尔
3/5
没有达到预期。
JS

函数buildTableData(){
让tbody=document.getElementsByTagName(“tbody”)[0];
让rows=tbody.children;
让人们=[];
for(让一行中的一行){
让person={};
让cells=row.children;
person.rating=单元格[0]。textContent;
person.review=单元格[1]。textContent;
person.favoriteFood=单元格[2].textContent;
人。推(人);
还人,;
}
让数据=人;
控制台日志(数据);
}

您想要一个循环,我假设每个评论都是附加到评论数组中的对象

var reviews = [];

var tbody = document.querySelectorAll("tbody")[0];
var TRs = tbody.querySelectorAll("tr");
for (var a = 0; a < TRs.length; a++) {
    var TDs = TRs[a].querySelectorAll("td");
    var review = {
        name: "",
        rating: "",
        review: ""
    };
    //These assume the order of your table columns don't change
    review.name = TDs[0].innerHTML;
    review.rating = TDs[1].innerHTML;
    review.review = TDs[2].innerHTML;
    reviews.push(review);
}
var reviews=[];
var tbody=document.queryselectoral(“tbody”)[0];
var TRs=tbody.queryselectoral(“tr”);
对于(变量a=0;a

您的
reviews
数组中应该包含您想要的所有内容。我假设第三列是“review”而不是“favorite food”

您可以通过使用
querySelectorAll('td')
获取所有元素。然后使用map只获取它的文本并返回它

函数buildTableData(){
常量元素=[…document.querySelectorAll('td')];
返回元素.map(x=>{
返回{content:x.innerHTML}
});
}
console.log(buildTableData());

产品评论
名称
评级
复习
上下快速移动
5/5
这个产品太好了,我又买了5个!
简
4/5
物有所值。
大卫
1/5
到达时间:(
Fiona
5/5
我喜欢!
迈克尔
3/5
没有达到预期。

您可以按以下方式尝试使用
queryselectoral()
map()

函数buildTableData(){
让rows=document.queryselectoral('tbody tr');
让data=Array.from(rows).map(function(tr){
返回{
评级:tr.querySelectorAll('td:n个子(1)')[0]。文本内容,
审阅:tr.querySelectorAll('td:n个子(2)')[0]。textContent,
favoriteFood:tr.querySelectorAll('td:n个孩子(3)')[0]。textContent
};
});
控制台日志(数据);
}
buildTableData();
产品评论
名称
评级
复习
上下快速移动
5/5
这个产品太好了,我又买了5个!
简
4/5
物有所值。
大卫
1/5
到达时间:(
Fiona
5/5
我喜欢!
迈克尔
3/5
没有达到预期。