Вы можете решить эту проблему кратко с помощью Array.reduce и некоторой деструктуризации ES6:
const data = [{id:10,coords:[[15,69],[16,85],[16,34]]},{id:10,coords:[[15,69],[16,63]]},{id:20,coords:[[15,69],[16,85],[16,34]]},{id:30,coords:[[15,69],[16,85],[16,34]]},{id:50,coords:[[15,69],[16,85],[16,34]]}]
const result = data.reduce((r, {id, coords}) => {
r[id] = (r[id] || []).length < coords.length ? {id, coords} : r[id]
return r
}, {})
console.log(Object.values(result))
Вы также можете сделать его менее читаемым в одной строке:
const data = [{id:10,coords:[[15,69],[16,85],[16,34]]},{id:10,coords:[[15,69],[16,63]]},{id:20,coords:[[15,69],[16,85],[16,34]]},{id:30,coords:[[15,69],[16,85],[16,34]]},{id:50,coords:[[15,69],[16,85],[16,34]]}]
const result = data.reduce((r, {id, coords}) =>
(r[id] = (r[id] || []).length < coords.length ? {id, coords} : r[id]) && r, {})
console.log(Object.values(result))