2017-02-09 90 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);