Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 如何过滤json对象数据?_Javascript_Jquery - Fatal编程技术网

Javascript 如何过滤json对象数据?

Javascript 如何过滤json对象数据?,javascript,jquery,Javascript,Jquery,Json对象的输入: {"data":[ {"itemID":100,"Testcase1":"aaa","status":"Active"}, {"itemID":100,"Testcase1":"bbb","status":"No"}, {"itemID":100,"Testcase1":"ccc","status":"Active"}, {"itemID":101,"Testcase1":"zzz","status":"Active"} ]} [{

Json对象的输入:

{"data":[
    {"itemID":100,"Testcase1":"aaa","status":"Active"},
    {"itemID":100,"Testcase1":"bbb","status":"No"},
    {"itemID":100,"Testcase1":"ccc","status":"Active"},
    {"itemID":101,"Testcase1":"zzz","status":"Active"}
]}
[{
    "itemID":"100",
    "Testcase1":"aaa", 
    "Testcase1":"bbb", 
    "Testcase1":"ccc", 
    "status":"Active",
    "status":"No",
    "status":"Active"
},
{
    "itemID":"101",
    "Testcase1":"zzz",
    "status":"Active"
}]
Json对象的预期输出:

{"data":[
    {"itemID":100,"Testcase1":"aaa","status":"Active"},
    {"itemID":100,"Testcase1":"bbb","status":"No"},
    {"itemID":100,"Testcase1":"ccc","status":"Active"},
    {"itemID":101,"Testcase1":"zzz","status":"Active"}
]}
[{
    "itemID":"100",
    "Testcase1":"aaa", 
    "Testcase1":"bbb", 
    "Testcase1":"ccc", 
    "status":"Active",
    "status":"No",
    "status":"Active"
},
{
    "itemID":"101",
    "Testcase1":"zzz",
    "status":"Active"
}]

有人帮我吗?

假设您的JSON对象是字符串,您可以对其调用JSON.parse:

这将为您提供以下结构中的数据:

您的预期输出不是有效的对象。对象键必须是唯一的。一个对象不能有三个Testcase1键或三个状态键。

您只需要从数据对象中提取对象

那么,一个纯JS解决方案:

var obj = {"data":[{"itemID":100,"Testcase1":"aaa","status":"Active"},

{"itemID":100,"Testcase1":"bbb","status":"No"},{"itemID":100,"Testcase1":"ccc","status":"Active"},

{"itemID":101,"Testcase1":"zzz","status":"Active"}]};

var newArray = [];

for( var i = 0; i < obj['data'].length; i++) {
   newArray.push(obj['data'][i]);
}

还有一个现场演示:查看控制台以了解结果>[对象,对象,对象,对象]

这可能对您有所帮助。这不是正确的方法。因为对象中不允许重复密钥。不管你要求什么。我已经创建了一个您所需格式的字符串

请核对一下


你能解释一下你想用什么样的过滤器吗?是的,我想像预期的输出一样重新构造对象,它只是从数据对象中提取对象。该对象无效。不能在对象上多次使用同一属性。因此,拥有Testcase1:aaa、Testcase1:bbb、Testcase1:ccc是行不通的。更不用说它没有用了。我猜他想从数据对象中提取对象数组,但对此不确定。@enguerranws他想从3个具有相同属性的对象中提取一个对象itemID@Spokey我只是理解:用这种方式显示重复值如果你不想重复值,你应该在你的问题中说出来?