Tengo una matriz que contiene un montón de elementos aleatorios como:
[{ "id":332, "foo":6, "event":"ABC-CNEG Correlations Ed3.0 Update 9 (XY-AHZ)", "date":"2018-11-26T00:00:00.000Z", }, { "id":324, "foo":1, "event":"ABC 3166-1_2013 No. VII-11", "date":"2018-06-30T00:00:00.000Z", }, { "id":325, "foo":1, "event":"ABC 3166-2_2013 To. XII-32", "date":"2018-06-30T00:00:00.000Z", }, { "id":326, "foo":2, "event":"ABC 3166-1_2016 No. VII-12", "date":"2018-06-30T00:00:00.000Z", }, { "id":327, "foo":1, "event":"ABC 3166-2_2018 To. XII-31", "date":"2018-06-30T00:00:00.000Z", }] Lo que debo hacer es "elegir" los elementos anteriores y crear una nueva matriz que contenga SOLO los elementos que contienen la siguiente cadena: 3166-1 . Entonces, la salida esperada sería:
[ { "id":324, "foo":1, "event":"ABC 3166-1_2013 No. VII-11", "date":"2018-06-30T00:00:00.000Z", }, { "id":326, "foo":2, "event":"ABC 3166-1_2016 No. VII-12", "date":"2018-06-30T00:00:00.000Z", } ]Mi caso de uso para esto es que puedo proporcionar un conjunto filtrado de opciones para una entrada de selección desplegable HTML.
¿Alguien tiene alguna idea de cómo puedo satisfacer mi caso de uso y obtener un conjunto filtrado de elementos en una nueva matriz?
Puede usar la función de filter de la matriz e includes el método de cadenas:
let arr=[{ "id":332, "foo":6, "event":"ABC-CNEG Correlations Ed3.0 Update 9 (XY-AHZ)", "date":"2018-11-26T00:00:00.000Z", }, { "id":324, "foo":1, "event":"ABC 3166-1_2013 No. VII-11", "date":"2018-06-30T00:00:00.000Z", }, { "id":325, "foo":1, "event":"ABC 3166-2_2013 To. XII-32", "date":"2018-06-30T00:00:00.000Z", }, { "id":326, "foo":2, "event":"ABC 3166-1_2016 No. VII-12", "date":"2018-06-30T00:00:00.000Z", }, { "id":327, "foo":1, "event":"ABC 3166-2_2018 To. XII-31", "date":"2018-06-30T00:00:00.000Z", }] let result=arr.filter(item=>item.event.includes('3166-1')) console.table(result)