0

我想创建/读取表的对象(按列)。我的代码在这里:

var arr1 = [];
var arr2 = [];
for (var i = 0; i < 3; i++) {
    var werteArray = [];
    var ueberschriftArray = [];
    $('#tabelleDateneingabe tbody tr').each(function() {
        werteArray.push($(this).children().eq(i).text());
    });
    $('#tabelleDateneingabe thead tr').each(function() {
        ueberschriftArray.push($(this).children().eq(i).text());
    });
    arr2.push({spalte: i, daten: {ueberschrift: ueberschriftArray, werte:werteArray}});
}
arr1.push(arr2);

这运行良好并生成此 JSON:

[
[
    {
        "spalte": 0,
        "daten": {
            "ueberschrift": [
                "Spalte1"
            ],
            "werte": [
                "Zelle: 0_0",
                "Zelle: 1_0",
                "Zelle: 2_0",
                "Zelle: 3_0",
            ]
        }
    },
    {
        "spalte": 1,
        "daten": {
            "ueberschrift": [
                "Spalte2"
            ],
            "werte": [
                "Zelle: 0_1",
                "Zelle: 1_1",
                "Zelle: 2_1",
                "Zelle: 3_1",
            ]
        }
    }]]

现在我想通过这个对象来获取每一行的元素数量。

我很确定这可以通过在“werte”节点上使用长度来完成,但是如何访问每一列(“spalte”)的这个值?

任何帮助表示赞赏。

4

2 回答 2

0

这是一个“替代”答案,因为它不是规范的做法,但该方法非常灵活,您会发现自己希望它总是这么简单......

我可以建议使用“JSONPath”: http ://goessner.net/articles/JsonPath/

一个允许您查询 JSON 对象的库,类似于 XPath 让您查询 XML 文档的方式。

然后在您的示例中调用它作为jsonPath(arr1,"..werte.*")返回匹配项的数组,或者 jsonPath(arr1,"..werte.*").length当然返回该数组中的项数。

于 2013-11-14T04:04:33.763 回答
0

这将返回 werte 中的条目数数组;

var rowCount = [];
for(var i=0;i<json[0].length;i++) {
    var rowArr = json[0][i].daten.werte;
    rowCount[i] = rowArr.length;
}
console.log(rowCount);
于 2013-11-14T04:09:12.180 回答