Estoy tratando de excluir elementos de una matriz de objetos en función de una matriz con los índices que tengo que eliminar, pero en cambio, estoy eliminando los primeros elementos de la matriz de objetos.
Mi código:
let historicPrecipitation = [{"indicator":"Historic Precipitation","month":"1","year":"2014","value":"228.5"},{"indicator":"Historic Precipitation","month":"2","year":"2014","value":"144.7"},{"indicator":"Historic Precipitation","month":"3","year":"2014","value":"120.3"},{"indicator":"Historic Precipitation","month":"4","year":"2014","value":"146.9"},{"indicator":"Historic Precipitation","month":"5","year":"2014","value":"146.4"},{"indicator":"Historic Precipitation","month":"6","year":"2014","value":"128.1"},{"indicator":"Historic Precipitation","month":"7","year":"2014","value":"139.2"},{"indicator":"Historic Precipitation","month":"8","year":"2014","value":"150.0"},{"indicator":"Historic Precipitation","month":"9","year":"2014","value":"199.7"},{"indicator":"Historic Precipitation","month":"10","year":"2014","value":"268.4"},{"indicator":"Historic Precipitation","month":"11","year":"2014","value":"98.5"},{"indicator":"Historic Precipitation","month":"12","year":"2014","value":"139.9"}]; let monthsWithoutRegistration = [4, 5]; for (let i = 0; i < monthsWithoutRegistration.length; i++) { for (let j = 0; j < historicPrecipitation.length; j++) { if (parseInt(historicPrecipitation[j]['month']) === parseInt(monthsWithoutRegistration[i])) { historicPrecipitation.splice(historicPrecipitation[j], 1); } } } console.log(historicPrecipitation);Necesita usar j en lugar de historicPrecipitation[j] en el splice porque debe pasar index , no el object :
let historicPrecipitation = [{ "indicator": "Historic Precipitation", "month": "1", "year": "2014", "value": "228.5" }, { "indicator": "Historic Precipitation", "month": "2", "year": "2014", "value": "144.7" }, { "indicator": "Historic Precipitation", "month": "3", "year": "2014", "value": "120.3" }, { "indicator": "Historic Precipitation", "month": "4", "year": "2014", "value": "146.9" }, { "indicator": "Historic Precipitation", "month": "5", "year": "2014", "value": "146.4" }, { "indicator": "Historic Precipitation", "month": "6", "year": "2014", "value": "128.1" }, { "indicator": "Historic Precipitation", "month": "7", "year": "2014", "value": "139.2" }, { "indicator": "Historic Precipitation", "month": "8", "year": "2014", "value": "150.0" }, { "indicator": "Historic Precipitation", "month": "9", "year": "2014", "value": "199.7" }, { "indicator": "Historic Precipitation", "month": "10", "year": "2014", "value": "268.4" }, { "indicator": "Historic Precipitation", "month": "11", "year": "2014", "value": "98.5" }, { "indicator": "Historic Precipitation", "month": "12", "year": "2014", "value": "139.9" }]; let monthsWithoutRegistration = [4, 5]; for (let i = 0; i < monthsWithoutRegistration.length; i++) { for (let j = 0; j < historicPrecipitation.length; j++) { if (parseInt(historicPrecipitation[j]['month']) === parseInt(monthsWithoutRegistration[i])) { historicPrecipitation.splice(j, 1); } } } console.log(historicPrecipitation);La sintaxis de empalme es incorrecta,
reemplazar con esto
historicPrecipitation.splice(j, 1);Puede utilizar el filter en lugar de los bucles for anidados:
let filteredHistoricPrecipitation = historicPrecipitation.filter(x => !monthsWithoutRegistration.includes(parseInt(x['month'])) );