I’m trying to exclude items from an array of objects based on an array with the indexes I have to remove, but instead it’s removing the first items from the array of objects.
My code:
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);
>Solution :
You need use j instead of historicPrecipitation[j] in splice because you should pass index not 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);