2017-02-09 119 views
3

我已经搜索了大约30分钟的堆栈溢出,但没有一个解决方案正在帮助我。我有以下的JSON ...按键值过滤json

[{"time":"2016-07-26 09:02:27","type":"aa"}, 
{"time":"2016-04-21 20:35:07","type":"ae"}, 
{"time":"2016-08-20 03:31:57","type":"ar"}, 
{"time":"2017-01-19 22:58:06","type":"ae"}, 
{"time":"2016-08-28 10:19:27","type":"ae"}, 
{"time":"2016-12-06 10:36:22","type":"ar"}, 
{"time":"2016-07-09 12:14:03","type":"ar"}, 
{"time":"2016-10-25 05:05:37","type":"ae"}, 
{"time":"2016-06-05 07:57:18","type":"ae"}, 
{"time":"2016-10-08 22:03:03","type":"aa"}, 
{"time":"2016-08-13 21:27:37","type":"ae"}, 
{"time":"2016-04-09 07:36:16","type":"ar"}, 
{"time":"2016-12-30 17:20:08","type":"aa"}, 
{"time":"2016-03-11 17:31:46","type":"aa"}, 
{"time":"2016-05-04 14:08:25","type":"ar"}, 
{"time":"2016-11-29 05:21:02","type":"ar"}, 
{"time":"2016-03-08 05:46:01","type":"ar"}, 
] 

我想保持在阵列中的格式相同,但仅包括具有类型为“AR”的对象。我如何过滤这个与JavaScript的JSON只包含我需要的类型?

+2

显然,你是没有研究你自己这个根本,是吗? – WillardSolutions

+2

重要的技术区别:* JSON是一个字符串*(这是将JavaScript数据结构序列化为字符串数据的一种方式,仅此而已)。你可以用它做的唯一事情就是执行字符串操作,或者将它解析成JavaScript数据结构。你问的是过滤一个对象数组,基于这些对象使用的一些关键字;你**不**问过滤JSON。 –

回答

6

您应该使用filter方法。

filter()方法会创建一个新的array,其中包含通过由提供的功能实现的测试的所有元素。

提供函数是一个callback它应用于数组的每个元素。

var arr=[{"time":"2016-07-26 09:02:27","type":"aa"}, 
 
{"time":"2016-04-21 20:35:07","type":"ae"}, 
 
{"time":"2016-08-20 03:31:57","type":"ar"}, 
 
{"time":"2017-01-19 22:58:06","type":"ae"}, 
 
{"time":"2016-08-28 10:19:27","type":"ae"}, 
 
{"time":"2016-12-06 10:36:22","type":"ar"}, 
 
{"time":"2016-07-09 12:14:03","type":"ar"}, 
 
{"time":"2016-10-25 05:05:37","type":"ae"}, 
 
{"time":"2016-06-05 07:57:18","type":"ae"}, 
 
{"time":"2016-10-08 22:03:03","type":"aa"}, 
 
{"time":"2016-08-13 21:27:37","type":"ae"}, 
 
{"time":"2016-04-09 07:36:16","type":"ar"}, 
 
{"time":"2016-12-30 17:20:08","type":"aa"}, 
 
{"time":"2016-03-11 17:31:46","type":"aa"}, 
 
{"time":"2016-05-04 14:08:25","type":"ar"}, 
 
{"time":"2016-11-29 05:21:02","type":"ar"}, 
 
{"time":"2016-03-08 05:46:01","type":"ar"}, 
 
]; 
 
var filtered=arr.filter(function(item){ 
 
    return item.type=="ar";   
 
}); 
 
console.log(filtered);

此外,还可以使用一个shorter方式:

var filtered=arr.filter(a=>a.type=="ar"); 
0

使用filter方法可以筛选阵列只返回匹配特定条件其中的那些元件data.filter((x)=>x.type === "ar");

filter方法创建一个新的数组与一个将通过条件x.type === "ar"

var data =[{"time":"2016-07-26 09:02:27","type":"aa"}, 
 
{"time":"2016-04-21 20:35:07","type":"ae"}, 
 
{"time":"2016-08-20 03:31:57","type":"ar"}, 
 
{"time":"2017-01-19 22:58:06","type":"ae"}, 
 
{"time":"2016-08-28 10:19:27","type":"ae"}, 
 
{"time":"2016-12-06 10:36:22","type":"ar"}, 
 
{"time":"2016-07-09 12:14:03","type":"ar"}, 
 
{"time":"2016-10-25 05:05:37","type":"ae"}, 
 
{"time":"2016-06-05 07:57:18","type":"ae"}, 
 
{"time":"2016-10-08 22:03:03","type":"aa"}, 
 
{"time":"2016-08-13 21:27:37","type":"ae"}, 
 
{"time":"2016-04-09 07:36:16","type":"ar"}, 
 
{"time":"2016-12-30 17:20:08","type":"aa"}, 
 
{"time":"2016-03-11 17:31:46","type":"aa"}, 
 
{"time":"2016-05-04 14:08:25","type":"ar"}, 
 
{"time":"2016-11-29 05:21:02","type":"ar"}, 
 
{"time":"2016-03-08 05:46:01","type":"ar"}, 
 
]; 
 
      
 
var result = data.filter((x)=>x.type === "ar"); 
 
console.log(result);

0

不一样干净上面的答案,但会LL元素仍然做的工作

var list = [{"time":"2016-07-26 09:02:27","type":"aa"}, 
{"time":"2016-04-21 20:35:07","type":"ae"}, 
{"time":"2016-08-20 03:31:57","type":"ar"}, 
{"time":"2017-01-19 22:58:06","type":"ae"}, 
{"time":"2016-08-28 10:19:27","type":"ae"}, 
{"time":"2016-12-06 10:36:22","type":"ar"}, 
{"time":"2016-07-09 12:14:03","type":"ar"}, 
{"time":"2016-10-25 05:05:37","type":"ae"}, 
{"time":"2016-06-05 07:57:18","type":"ae"}, 
{"time":"2016-10-08 22:03:03","type":"aa"}, 
{"time":"2016-08-13 21:27:37","type":"ae"}, 
{"time":"2016-04-09 07:36:16","type":"ar"}, 
{"time":"2016-12-30 17:20:08","type":"aa"}, 
{"time":"2016-03-11 17:31:46","type":"aa"}, 
{"time":"2016-05-04 14:08:25","type":"ar"}, 
{"time":"2016-11-29 05:21:02","type":"ar"}, 
{"time":"2016-03-08 05:46:01","type":"ar"}, 
] 

var newList = []; 

for (var i = 0; i < list.length; i++) { 
    if (list[i].type === 'ar') { 
     newList.push(list[i]); 
    } 
} 

console.log(newList); 
2

你可以使用filter功能。检查browser support第一:

var result = a.filter(function(v){ 
    return v.type==='ar'; 
}) 

希望这有助于。

var list = [ 
 
    {"time":"2016-07-26 09:02:27","type":"aa"}, 
 
    {"time":"2016-04-21 20:35:07","type":"ae"}, 
 
    {"time":"2016-08-20 03:31:57","type":"ar"}, 
 
    {"time":"2017-01-19 22:58:06","type":"ae"}, 
 
    {"time":"2016-08-28 10:19:27","type":"ae"}, 
 
    {"time":"2016-12-06 10:36:22","type":"ar"}, 
 
    {"time":"2016-07-09 12:14:03","type":"ar"}, 
 
    {"time":"2016-10-25 05:05:37","type":"ae"}, 
 
    {"time":"2016-06-05 07:57:18","type":"ae"}, 
 
    {"time":"2016-10-08 22:03:03","type":"aa"}, 
 
    {"time":"2016-08-13 21:27:37","type":"ae"}, 
 
    {"time":"2016-04-09 07:36:16","type":"ar"}, 
 
    {"time":"2016-12-30 17:20:08","type":"aa"}, 
 
    {"time":"2016-03-11 17:31:46","type":"aa"}, 
 
    {"time":"2016-05-04 14:08:25","type":"ar"}, 
 
    {"time":"2016-11-29 05:21:02","type":"ar"}, 
 
    {"time":"2016-03-08 05:4601","type":"ar"}, 
 
]; 
 

 
var result = list.filter(function(obj, index){ 
 
    return obj.type==='ar'; 
 
}) 
 

 
console.log(result);