Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将表转换为数组_Javascript_Jquery_Arrays_Html Table - Fatal编程技术网

Javascript 将表转换为数组

Javascript 将表转换为数组,javascript,jquery,arrays,html-table,Javascript,Jquery,Arrays,Html Table,我已经看过很多关于如何将数组转换成表的帖子,但是没有那么多的帖子是相反的。我想要一张这样的桌子: <table id="dataTable"> <tr> <th>Functional Category</th> <th>Brand Name</th> <th>When Obtained</th> <th>How Obtained</th> <

我已经看过很多关于如何将数组转换成表的帖子,但是没有那么多的帖子是相反的。我想要一张这样的桌子:


<table id="dataTable">
    <tr>
        <th>Functional Category</th>
        <th>Brand Name</th>
        <th>When Obtained</th>
        <th>How Obtained</th>
        <th>How Often Worn</th>
        <th>Where Made</th>
        <th>Has a Graphic</th>
    </tr>
    <tr>
        <td>T-Shirt</td>
        <td>threadless</td>
        <td>Last 3 Months</td>
        <td>Purchased</td>
        <td>Monthly</td>
        <td>India</td>
        <td>Yes</td>
    </tr>
    <tr>
        <td>T-Shirt</td>
        <td>RVCA</td>
        <td>2 Years Ago</td>
        <td>Purchased</td>
        <td>Bi-Monthly</td>
        <td>Mexico</td>
        <td>Yes</td>
    </tr>
</table>

var tableData = [
    {
        category: "T-shirt",
        brandName: "threadless",
        whenObtained: "Last 3 Months",
        howObtained: "Purchased",
        howOftenWorn: "Monthly",
        whereMade: "India",
        hasGraphic: "Yes"
    },
    {
        category: "T-shirt",
        brandName: "RVCA",
        whenObtained: "2 Years Ago",
        howObtained: "Purchased",
        howOftenWorn: "Bi-Monthly",
        whereMade: "Mexico",
        hasGraphic: "Yes"
    }
]
我希望使用jQuery来实现这一点,我想知道实现这一点的最佳方式是什么

有关示例,请参见。我已将相关代码包括在下面:

$(function() {
    var $rows= $("#tableName tbody tr");      
    var data = [];

    $rows.each(function(row, v) {
        $(this).find("td").each(function(cell, v) {
            if (typeof data[cell] === 'undefined') {
                data[cell] = [];
            }
            data[cell][row] = $(this).text();
        });
    });

    console.log(data);
});
var table=document.getElementById(“数据表”);
var tableArr=[];
对于(变量i=1;i所以我所做的就是选择所有的
tr
元素并迭代它们。接下来,我检查以确保我没有查看
th
元素。然后我使用
cols
数组填充对象。这本可以更简单(2d数组),但我使用了
cols
,因为这是您的输出

var i, items, item, dataItem, data = [];
var cols = [ "category", "brandName", "whenObtained", "howObtained", "howOftenWorn",
 "whereMade", "hasGraphic" ];

$("#dataTable tr").each(function() {
    items = $(this).children('td');

    if(items.length === 0) { // return if this tr only contains th
        return;
    }

    dataItem = {};
    for(i = 0; i < cols.length; i+=1) {
        item = items.eq(i);
        if(item) {
            dataItem[cols[i]] = item.html();
        }
    }
    data.push(dataItem);
});
var i,items,item,dataItem,data=[];
var cols=[“类别”、“品牌名称”、“何时获得”、“如何获得”、“多久使用”,
“whereMade”、“hasGraphic”];
$(“#dataTable tr”)。每个(函数(){
items=$(this.children('td');
if(items.length==0){//如果此tr仅包含th,则返回
返回;
}
数据项={};
对于(i=0;i
以下各项应该可以做到

var array = [];
var headers = [];
$('#dataTable th').each(function(index, item) {
    headers[index] = $(item).html();
});
$('#dataTable tr').has('td').each(function() {
    var arrayItem = {};
    $('td', $(this)).each(function(index, item) {
        arrayItem[headers[index]] = $(item).html();
    });
    array.push(arrayItem);
});

有一个很好的工具:$(table).map,但是很明显,它总是返回扁平数组,不管里面有多少嵌套的.map()(需要两个:一个用于行,一个用于单元格)

因此,让我们对表使用jQuery.map,对单元格使用tr和object.map(),第二个嵌套级别返回一个数组

function t2a (tabble){
return $.map($(tabble),function(el,i) {
    return $.map($(el).find('tr'),function(el,i) {
        return [
            $(el).find('td').map(function() {
                return $(this).text();
            }).get()
        ];
    });
});
}

类似的问题@JamesMontagne我甚至不确定是否开始这样做,因为这超出了我目前的技能水平。因此,不幸的是,我无法尝试任何东西。如果我不想用JSON做这件事怎么办?
$。每个($('dataTable th')、函数(index,item){
可以是
$('dataTable th')。每个(函数(index,item){
。如果我不想得到最后一列呢?
function t2a (tabble){
return $.map($(tabble),function(el,i) {
    return $.map($(el).find('tr'),function(el,i) {
        return [
            $(el).find('td').map(function() {
                return $(this).text();
            }).get()
        ];
    });
});
}