Skip to content

Instantly share code, notes, and snippets.

@timbillstrom
Last active May 9, 2019 20:49
Show Gist options
  • Select an option

  • Save timbillstrom/b537a6c11883eaebd1ec320911dabebf to your computer and use it in GitHub Desktop.

Select an option

Save timbillstrom/b537a6c11883eaebd1ec320911dabebf to your computer and use it in GitHub Desktop.
Filter an array of objects using a object of attributes
const DATASTORE = [{"ID":13352463,"Regno":"HZR761","Brand":"Volvo","Model":"V60","Modeldescription":"D4 AWD Ocean Race BE Pro","Yearmodel":2016,"Firstreg":"2015-09","Miles":9334,"PriceSek":"209.900","PriceExtra":"","Bodytype":"Kombi","Fax":"","Color":"Svart","Phone":"0221-771002","Homepage":"http://www.vmfordon.se","Email":"[email protected]","Info":"Svensksåld, Business Edition PRO, Komplett Servicehistorik, En brukare, Möjlighet till 0kr kontant, ABS-bromsar, Airbag förare, Airbag passagerare fram, Avstängningsbar pass-airbag, Airbag sidor, Antisladdsystem, Antispinn, Auto Start/Stop, Cd-stereo, AUX-ingång, USB-ingång, Streaming via bluetooth, City Safety, Dieselvärmare, Elhissar fram och bak, Fjärrstyrt c-lås, Farthållare, Färddator, Gummimattor, Handsfree via Bluetooth, Helskinn, 2-zons klimatanläggning, Lastnät, Multifunktionsratt i läder, Navigation, PDC Fram och bak, Rollo (lastrumsgardin), Rails, Regnsensor, Soltak glas, 17\" Sommarhjul, Sportratt, Sportstolar, Sätesvärme fram, Vinterhjul Friktion, Xenonstrålkastare, Dragkrok kan monteras från 6000kr, Bränsleförbrukning: 0.55l/mil, Kan leasas av företag, OBS Vi tar EJ kort, Betala gärna med Swish eller bankdosa, Läs om olika betalningssätt och ansök om lånelöfte på vår hemsida, Nästa service 2019-08-17 eller vid 11.000mil, Vi byter in alla bilar som är svensksålda, Reservation för fel i annonsen, Du hittar alla våra bilar på www.vmfordon.se, RING ALLTID OCH BOKA TID, KONTORET 0221-771002, JENS 076-0409644","Gearboxtype":"Automatisk","Fueltype":"Diesel","Seller":"VMfordon (Västra Mälardalens Fordon AB)","City":"Köping","Contactid":"","ExklMoms":"1","Added":1557327315,"Environment":"0","Status":"0","Weight":"","Horsepower":189,"ContactName":"","ContactPhone":"","ContactMobile":"","ContactEmail":"","ContactPhoto":"","McEngineType":"","McCc":"","McPower":"139","McHours":"","CampersBeds":"","CampersLength":"","Images":{"Image":[{"URL":"https://pro.bbcdn.io/d0/d0db80fd-9094-47e6-be4b-61d0890fb2d5?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/f5/f563ac61-6d04-413e-995d-87644d2de1bd?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/c8/c8d0b368-f129-4c6f-a7bd-b85c2f9a5a90?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/ff/ff7ada26-ead3-4dda-a465-32d6617f7eb9?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/0a/0a22697c-7c7f-47cf-bb94-90d8cf7b08f8?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/4f/4fd98f4d-40a7-4249-a187-17026e5cd249?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/a5/a52f8295-2322-4f1d-8097-3a55c2dc7beb?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/47/47902bb2-65a4-4bb5-9457-616b27a5f474?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/ec/ec79b79e-f467-4742-ac43-dc4116e7948b?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/3f/3fd287c1-f76e-43e2-abfc-75d4598d3219?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/0d/0d4f5fb6-cc04-4284-bdb3-527a1a1de400?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/4d/4dd0d52b-2af8-4840-9348-6d5b5865a9a5?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/4a/4a396a66-90da-4b1b-a6c8-f782573efcb5?rule=legacy-largest&format=.jpg"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"}]},"Warrantyprogram":"","Inwarrantyprogram":false,"Specs":null,"Description":"","Related":null,"Extras":{"Header":"","Footer":""}},{"ID":13349986,"Regno":"REJ990","Brand":"Volvo","Model":"XC70","Modeldescription":"D4 AWD Classic Sport EU6 181hk","Yearmodel":2016,"Firstreg":"2016-05","Miles":13988,"PriceSek":"229.900","PriceExtra":"","Bodytype":"Kombi","Fax":"","Color":"Vit","Phone":"0221-771002","Homepage":"http://www.vmfordon.se","Email":"[email protected]","Info":"RING/MEJLA OCH BOKA TID, HEMLEVERANS, Svensksåld, Komplett Servicehistorik, Nyservad, En brukare, Möjlighet till 0kr kontant, Driver Support paket, Adaptiv farthållare m autobroms, Avståndsvarnare, Kollisionsvarnare m autobroms, Lane Departure Warning, Trafikskyltsinformation, ABS-bromsar, Airbag förare, Airbag passagerare fram, Avstängningsbar pass-airbag, Airbag sidor, Antisladdsystem, Antispinn, Auto Start/Stop, Cd-stereo, AUX-ingång, USB-ingång, Streaming via bluetooth, City Safety, Dieselvärmare med tidur VOC, Dragkrok, Elhissar fram och bak, Elstol Förare med minne, Elinfällbara Sidospeglar, Färddator, Gummimattor, Handsfree via Bluetooth, Helskinn, 2-zons klimatanläggning, Lastgaller, Multifunktionsratt i läder, Navigation, PDC Fram och bak, Rollo (lastrumsgardin), Rails, Regnsensor, Sportratt, Sportstolar, Sätesvärme fram, Sätesvärme bak, Vinterhjul Dubb, VOC volvo on call, Xenonstrålkastare, EURO 6, Fjärrstyrt c-lås keyless, 18\" Sommarhjul, Bränsleförbrukning: 0.58l/mil, Dragvikt B-körkort: 1100kg, Dragvikt utökat B: 1850kg, Max släpvagnsvikt: 2100kg, Kan leasas av företag, OBS Vi tar EJ kort, Betala gärna med Swish eller bankdosa, Läs om olika betalningssätt och ansök om lånelöfte på vår hemsida, Nästa service 2020-05-01 eller vid 17.000mil, GPS via simkort eller mobil hotspot, Vi byter in alla bilar som är svensksålda, Reservation för fel i annonsen, Du hittar alla våra bilar på www.vmfordon.se, RING ALLTID OCH BOKA TID, KONTORET 0221-771002, JENS 076-0409644","Gearboxtype":"Automatisk","Fueltype":"Diesel","Seller":"VMfordon (Västra Mälardalens Fordon AB)","City":"Köping","Contactid":"","ExklMoms":"1","Added":1557311417,"Environment":"0","Status":"0","Weight":"","Horsepower":181,"ContactName":"","ContactPhone":"","ContactMobile":"","ContactEmail":"","ContactPhoto":"","McEngineType":"","McCc":"","McPower":"133","McHours":"","CampersBeds":"","CampersLength":"","Images":{"Image":[{"URL":"https://pro.bbcdn.io/6d/6df619bd-ac97-4240-8566-90ad4f3e6a99?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/27/277f9484-2a1c-4cd1-9804-cbaa9b1e1087?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/9a/9a724e2f-4c59-4853-8350-74a04c6ed11f?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/94/94cf75e1-d966-46ea-ac64-abb81b652397?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/d5/d5a7e53c-9820-4ad3-8c75-0c8af36c34ee?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/9b/9bd7c0a2-8381-40cf-a132-d26f82930eb6?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/5e/5eac82ca-6f35-455d-925c-a8f86b5a2772?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/8b/8b5b9351-4db8-4a1e-99c6-af2d30084703?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/9e/9ec5358b-a402-4c0a-8cc4-bd48911c28fe?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/ad/adf0384d-0ee2-4dd4-b857-f105b949e55b?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/96/96db4c79-9509-4f5e-958e-7d3260ae6114?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/cf/cf6b9c2f-5d29-4314-b974-8ee51948f037?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/a4/a450e91b-55d3-4653-b656-83c149377f93?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/f0/f049bb26-f02c-44f1-8cc8-8b1a052ea440?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/d9/d90d6b84-2fc0-4284-82be-5559d6b96d54?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/88/88b40bcb-e402-4fc3-9f9b-a7685bc806be?rule=legacy-largest&format=.jpg"},{"URL":"https://pro.bbcdn.io/0b/0ba00ffa-53fb-41c0-b831-e725c61b28be?rule=legacy-largest&format=.jpg"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"},{"URL":"https://admin.bytbil.com/images/larssons"}]},"Warrantyprogram":"","Inwarrantyprogram":false,"Specs":null,"Description":"","Related":null,"Extras":{"Header":"","Footer":""}}];
let filter = {
Brand: 'Volvo',
Model: 'V60'
}
function multifilter(filter) {
const filterKeys = Object.keys(filter)
return DATASTORE.filter((item) => {
return filterKeys.every(key => {
console.debug(`Checking ${key}:${item[key]} === ${filter[key]}`)
if (item[key] === filter[key]) {
return true
}
})
})
}
console.log(multifilter(filter));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment