过滤JSON对象的数组

时间:2017-05-04 20:31:06

标签: javascript arrays json

我正在尝试过滤JSON对象的数组。我是JavaScript的新手,并试图用我曾经使用的编码语言来做。基本上,我想采用以下数组对象。

     var result = [
                                {
                                    date : '2016-11-21',
                                    name: 'Bob',
                                    score: 0.1034947
                                },

                                {
                                    date : '2016-10-21',
                                    name: 'Bill',
                                    score: 0.2081911},

                                {
                                    date : '2016-10-21',
                                    name: 'Mary',
                                    score: 0.234947
                                },
                                {
                                    date : '2016-10-21',
                                    name: 'Bob',
                                    score: 0.1034947
                                },

                                {
                                    date : '2016-11-21',
                                    name: 'Bill',
                                    score: 0.2081911},

                                {
                                    date : '2016-11-21',
                                    name: 'Mary',
                                    score: 0.234947
                                },
                                {
                                    date : '2016-12-21',
                                    name: 'Bob',
                                    score: 0.1034947
                                },

                                {
                                    date : '2016-12-21',
                                    name: 'Bill',
                                    score: 0.2081911},

                                {
                                    date : '2016-12-21',
                                    name: 'Mary',
                                    score: 0.234947
                                }




  ]

然后我想根据对象进行过滤。例如。

var selected_Names = ['Bob','Mary']

我只想在这种情况下返回Bob和Mary的信息。

 [
                                {
                                    date : '2016-11-21',
                                    name: 'Bob',
                                    score: 0.1034947
                                },



                                {
                                    date : '2016-10-21',
                                    name: 'Mary',
                                    score: 0.234947
                                },
                                {
                                    date : '2016-10-21',
                                    name: 'Bob',
                                    score: 0.1034947
                                },



                                {
                                    date : '2016-11-21',
                                    name: 'Mary',
                                    score: 0.234947
                                },
                                {
                                    date : '2016-12-21',
                                    name: 'Bob',
                                    score: 0.1034947
                                },



                                {
                                    date : '2016-12-21',
                                    name: 'Mary',
                                    score: 0.234947
                                }




  ]

谢谢!

1 个答案:

答案 0 :(得分:-1)

const result = [{date:'2016-11-21',name:'Bob',score:0.1034947},{date:'2016-10-21',name:'Bill',score:0.2081911},{date:'2016-10-21',name:'Mary',score:0.234947},{date:'2016-10-21',name:'Bob',score:0.1034947},{date:'2016-11-21',name:'Bill',score:0.2081911},{date:'2016-11-21',name:'Mary',score:0.234947},{date:'2016-12-21',name:'Bob',score:0.1034947},{date:'2016-12-21',name:'Bill',score:0.2081911},{date:'2016-12-21',name:'Mary',score:0.234947}];
  
const filterNames = arr => names => arr.filter(e => names.includes(e.name));

const names = ['Bob', 'Mary'];

const res = filterNames(result)(names);

console.log(JSON.stringify(res, null, 2));