如何通过特定键过滤javascript中的对象

时间:2018-05-07 20:22:52

标签: javascript json object filter

我在数组[0]中有以下对象:

   [
       {
        "startDay": "05-06",
        "endDay": "05-06",
        "startTime": "xxxx", 
        "eventType": "craft" 
    },
    {
        "startDay": "05-05",
        "endDay": "05-06",
        "startTime": "1400", 
        "eventType": "art" 
    },
    {
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1100", 
        "eventType": "music" 
    },
    {
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1400", 
        "eventType": "fishing" 
    },
    {
        "startDay": "05-07","endDay": "05-08",
        "startTime": "1400", 
        "eventType": "football" 
    }
]

如何通过 item.startDay 过滤此内容?例如如果过滤器是“05-06”,则过滤的将是:

[{
        "startDay": "05-06",
        "endDay": "05-06",
        "startTime": "xxxx", 
        "eventType": "craft" 
    }]

如果过滤器为“05-08”,则过滤后的内容为:

[{
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1100", 
        "eventType": "music" 
    },
    {
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1400", 
        "eventType": "fishing" 
    }]

4 个答案:

答案 0 :(得分:6)

您可以使用filter方法并将回调提供的功能作为参数传递。

  

filter()方法创建一个包含所有传递元素的新数组   由提供的函数实现的测试。

let data = [ { "startDay": "05-06", "endDay": "05-06", "startTime": "xxxx", "eventType": "craft" }, { "startDay": "05-05", "endDay": "05-06", "startTime": "1400", "eventType": "art" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1100", "eventType": "music" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1400", "eventType": "fishing" }, { "startDay": "05-07","endDay": "05-08", "startTime": "1400", "eventType": "football" } ]

let startDay = "05-08";
data = data.filter(function(item){
  return item.startDay == startDay;
});
console.log(data);

另一种方法是使用arrow函数。

let data = [ { "startDay": "05-06", "endDay": "05-06", "startTime": "xxxx", "eventType": "craft" }, { "startDay": "05-05", "endDay": "05-06", "startTime": "1400", "eventType": "art" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1100", "eventType": "music" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1400", "eventType": "fishing" }, { "startDay": "05-07","endDay": "05-08", "startTime": "1400", "eventType": "football" } ]

let startDayParam = "05-08";
data = data.filter(({startDay}) => startDay == startDayParam);
console.log(data);

答案 1 :(得分:1)

您可以像这样使用.filter()



let data =  [{"startDay": "05-06","endDay": "05-06","startTime": "xxxx","eventType": "craft"},{"startDay": "05-05","endDay": "05-06","startTime": "1400","eventType": "art"},{"startDay": "05-08","endDay": "05-08","startTime": "1100", "eventType": "music"},{"startDay": "05-08","endDay": "05-08","startTime": "1400","eventType": "fishing"},{"startDay": "05-07","endDay": "05-08","startTime": "1400","eventType": "football"}],
    match = '05-08';

let result = data.filter(({ startDay }) => startDay == match);

console.log(result);




答案 2 :(得分:1)

您可以使用filter方法:

const array = [{
    "startDay": "05-06",
    "endDay": "05-06",
    "startTime": "xxxx",
    "eventType": "craft"
  },
  {
    "startDay": "05-05",
    "endDay": "05-06",
    "startTime": "1400",
    "eventType": "art"
  },
  {
    "startDay": "05-08",
    "endDay": "05-08",
    "startTime": "1100",
    "eventType": "music"
  },
  {
    "startDay": "05-08",
    "endDay": "05-08",
    "startTime": "1400",
    "eventType": "fishing"
  },
  {
    "startDay": "05-07",
    "endDay": "05-08",
    "startTime": "1400",
    "eventType": "football"
  }
];
const elementsWith0508 = array.filter(element => element.startDay === '05-08');
console.log(elementsWith0508);

答案 3 :(得分:1)

你可以这样做:

const filteredArray = array[0].filter((value) => {
  return value.startDay == "05-06"
})

filter函数内部的返回返回匹配条件的每个对象,并用它构建一个新数组。

希望它有所帮助!

相关问题