简体   繁体   English

过滤JavaScript中的对象数组

[英]Filter an array of objects in javascript

I would like to filter JavaScript objects by their property value. 我想按属性值过滤JavaScript对象。 Here is a scenario: 这是一个场景:

The array below is a small example of what I'm working with 下面的数组是我正在使用的一个小例子

 var array = [{

    "Title": "July 13 - July 19 2014",
    "displayAd_imp": "15,242,505",
    "Date": "2014-07-17T00:00:00.000Z",
    "WeekNo": 29
}, {

    "Title": "July 20 - July 26 2014",
    "displayAd_imp": "15,942,705",
    "Date": "2014-07-24T00:00:00.000Z",
    "WeekNo": 30
}, {

    "Title": "July 27 - Aug 2 2014",
    "displayAd_imp": "15,683,545",
    "Date": "2014-07-31T00:00:00.000Z",
    "WeekNo": 31
}, {

    "Title": "Aug 3 - Aug 9 2014",
    "displayAd_imp": "15,042,005",
    "Date": "2014-08-07T00:00:00.000Z",
    "WeekNo": 32
}, {

    "Title": "Aug 10 - Aug 17 2014",
    "displayAd_imp": "15,442,605",
    "Date": "2014-08-14T00:00:00.000Z",
    "WeekNo": 33
}]

In my app there are two dropdown fields that would let users pick a range of weeks. 在我的应用程序中,有两个下拉字段,这些字段可让用户选择几个星期。 I'm calculating the week number by the "Date" and inserting the "WeekNo" as a property. 我正在按“日期”计算星期数,并将“ WeekNo”作为属性插入。 I would like to use WeekNo to get a chunk of data based on the start-end values. 我想使用WeekNo根据起始端值获取数据块。

Example would be if start date is week29 and end is week32 the method would return the relevant data. 例如,如果开始日期为week29,结束日期为week32,则该方法将返回相关数据。

I have a Jsfiddle going if someone would like to update it. 如果有人要更新它,我有一个Jsfiddle

Thanks a ton in advance! 在此先感谢一吨!

You can use the Array.filter function. 您可以使用Array.filter函数。 You call it directly on your array then provide a callback. 您可以直接在数组上调用它,然后提供回调。 If that callback returns true, the element is included in a new array that's returned from filter . 如果该回调返回true,则该元素包含在从filter返回的新数组中。

For example: 例如:

var newArr = array.filter(function(item) {
    return (item.WeekNo >= 29 && item.WeekNo < 32);
});

Here's an updated JSfiddle with this included. 这是包含此内容的更新的JSfiddle

  var array = [{ "Title": "July 13 - July 19 2014", "displayAd_imp": "15,242,505", "Date": "2014-07-17T00:00:00.000Z", "WeekNo": 29 }, { "Title": "July 20 - July 26 2014", "displayAd_imp": "15,942,705", "Date": "2014-07-24T00:00:00.000Z", "WeekNo": 30 }, { "Title": "July 27 - Aug 2 2014", "displayAd_imp": "15,683,545", "Date": "2014-07-31T00:00:00.000Z", "WeekNo": 31 }, { "Title": "Aug 3 - Aug 9 2014", "displayAd_imp": "15,042,005", "Date": "2014-08-07T00:00:00.000Z", "WeekNo": 32 }, { "Title": "Aug 10 - Aug 17 2014", "displayAd_imp": "15,442,605", "Date": "2014-08-14T00:00:00.000Z", "WeekNo": 33 }] var predicate = function(start, end) { return function(array) { return _.inRange(array.WeekNo, start, end + 1); } } var result = _.filter(array, predicate(29, 32)); console.log('inRange', result); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM