Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
在另一个json对象中使用jQuery筛选json响应数据表_Jquery_Json - Fatal编程技术网

在另一个json对象中使用jQuery筛选json响应数据表

在另一个json对象中使用jQuery筛选json响应数据表,jquery,json,Jquery,Json,我想过滤我的JSON响应,它是这样的数据表行列形式,有100多行。现在我想过滤ModelName上的数据,比如ModelName=Buc98 还希望从每行中删除ModelName列及其各自的值 { "cols": [ { "type": "datetime", "id": "ModelDate", "label": "ModelDate" }, {

我想过滤我的JSON响应,它是这样的数据表行列形式,有100多行。现在我想过滤ModelName上的数据,比如
ModelName=Buc98
还希望从每行中删除ModelName列及其各自的值

{
    "cols": [
        {
            "type": "datetime",
            "id": "ModelDate",
            "label": "ModelDate"
        },
        {
            "type": "string",
            "id": "ModelName",
            "label": "ModelName"
        },
        {
            "type": "number",
            "id": "value",
            "label": "value"
        }
    ],
    "rows": [
        {
            "c": [
                {
                    "v": "Date(2012, 0, 1, 0, 0, 0)"
                },
                {
                    "v": "Buc98"
                },
                {
                    "v": 100
                }
            ]
        }
    ]
}

解决此类问题的关键是首先将模型转换为更易于使用的形式。大概是这样的:

{
    "cols": [
        {
            "type": "datetime",
            "id": "ModelDate",
            "label": "ModelDate"
        },
        {
            "type": "string",
            "id": "ModelName",
            "label": "ModelName"
        },
        {
            "type": "number",
            "id": "value",
            "label": "value"
        }
    ],
    "rows": [
        {
            "ModelDate": "Date(2012, 0, 1, 0, 0, 0)",
            "ModelName": "Buc98",
            "value": 100
        }
    ]
}
因此,我们将这样做:o)

现在我们有了一个合理的结构。我们实际上可以进行过滤。为了做到这一点,我个人定义了一个函数,返回模型的过滤版本,以便我们可以轻松地取消过滤

function filter(model, prop, value){
    var filteredRows = [];

    var rowCount = model.rows.length;
    for (var i = 0; i < rowCount; i++){
        if (model.rows[i][prop] == value){
            filteredRows.push(model.rows[i]);
        }
    }

    //return a filtered version of the model
    return { 
        cols: model.cols,
        rows: filteredRows
    };
}

编辑-更新答案,以便删除不匹配的行。并添加了使用示例

您期望的输出是什么?我们如何传递每行的道具我添加了一个使用示例,在重新阅读您的问题后,我已反转筛选,因此它只包含匹配的行。
[
    {
        "ModelDate": "Date(2012, 0, 1, 0, 0, 0)",
        "ModelName": "Buc98",
        "value": 100
    }
] 
function filter(model, prop, value){
    var filteredRows = [];

    var rowCount = model.rows.length;
    for (var i = 0; i < rowCount; i++){
        if (model.rows[i][prop] == value){
            filteredRows.push(model.rows[i]);
        }
    }

    //return a filtered version of the model
    return { 
        cols: model.cols,
        rows: filteredRows
    };
}
var filtered = filter(data, 'ModelName', 'Buc98');