Filter JSON by key value
Solution 1
You should use filter
method.
The filter()
method creates a new array
with all elements that pass the test implemented by the provided function.
Provided function is a callback
which is applied to each element of the array.
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"}, ];
console.log(arr.filter(function(item){
return item.type == "ar";
}));
Also, you can use a shorter
way with arrow
functions:
var filtered = arr.filter(a => a.type == "ar");
Solution 2
Using filter
method you can filter the array to return only those elements which match a particular condition data.filter((x)=>x.type === "ar");
The filter
method creates a new array with all elements that will pass the condition 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);
Solution 3
You could use filter
function. Check browser support first:
var result = a.filter(function(v){
return v.type==='ar';
})
Hope this helps.
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);
JordanBarber
I am a UI Developer and Designer focused on modern javascript frameworks. Most recently, I have been using Angular (2+) for the past two and a half years, but I also have experience with React, Vue and Aurelia. I strive in a team environment in which I can work with others to turn ideas and designs into highly usable experiences. I have expert experience with Javascript, Angular, Aurelia, Git, HTML, CSS/SASS, Wordpress, Drupal, Webpack, NPM, Adobe Illustrator and Sketch. Always striving to learn more.
Updated on April 23, 2021Comments
-
JordanBarber about 3 years
I have the following JSON and I want to keep the array in the same format but only include objects with type
"ar"
. How can I filter this JSON with JavaScript to only include the types I need?[{"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"}, ]
-
devops_engineer almost 6 yearsIf I have to filter out based on type as well as latest timestamp, can you please suggest as to how can it be done?
-
Mihai Alexandru-Ionut almost 6 years@iOS_programmer, do you need to filter by two fields ?
-
devops_engineer almost 6 yearsYes.. for example in the above json... I would want the type ''ar" which has the latest timestamp.. It would be really appreciated if you can let me know how to filter latest timestamp along with type.
-
Amino about 3 yearsThank you, saved my time