Javascript |从对象数组中删除不需要的数据

标签 javascript arrays object

我只想要数组对象中的第一年和去年元素

例如,这是数据(它已排序,所以我只是不想搞乱):

[
  { make: 'audi', model: 'rs5', year: '2013' },
  { make: 'audi', model: 'rs5', year: '2015' },
  { make: 'audi', model: 'r8', year: '2020' },
  { make: 'ford', model: 'mustang', year: '2012' },
  { make: 'ford', model: 'fusion', year: '2015' },
  { make: 'ford', model: 'mustang', year: '2033' },
  { make: 'kia', model: 'optima', year: '2010' },
  { make: 'kia', model: 'optima', year: '2012' },
  { make: 'kia', model: 'optima', year: '2020' },
  { make: 'kia', model: 'optima', year: '2030' },
  { make: 'kia', model: 'optima', year: '2040' }
]

我希望像这样删除所有的中年:

[
  { make: 'audi', model: 'rs5', year: '2013' },
  { make: 'audi', model: 'r8', year: '2020' },
  { make: 'ford', model: 'mustang', year: '2012' },
  { make: 'ford', model: 'mustang', year: '2033' },
  { make: 'kia', model: 'optima', year: '2010' },
  { make: 'kia', model: 'optima', year: '2040' }
]

最佳答案

您可以通过 make 分隔数组,然后获取每个 make 的第一个和最后一个值:

const arr = [
  { make: 'audi', model: 'rs5', year: '2013' },
  { make: 'audi', model: 'rs5', year: '2015' },
  { make: 'audi', model: 'r8', year: '2020' },
  { make: 'ford', model: 'mustang', year: '2012' },
  { make: 'ford', model: 'fusion', year: '2015' },
  { make: 'ford', model: 'mustang', year: '2033' },
  { make: 'kia', model: 'optima', year: '2010' },
  { make: 'kia', model: 'optima', year: '2012' },
  { make: 'kia', model: 'optima', year: '2020' },
  { make: 'kia', model: 'optima', year: '2030' },
  { make: 'kia', model: 'optima', year: '2040' }
]

const grouped = arr.reduce((a, el) => (a[el.make] ? a[el.make].push(el) : a[el.make] = [el], a), {})
const out = Object.values(grouped).reduce((a, group) => (a.push(group[0], group[group.length - 1]), a), [])

console.log(out)

关于Javascript |从对象数组中删除不需要的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59877596/

相关文章:

java - 垃圾收集器的可视化

javascript - 每个范围之外的 "This"(JQuery)

javascript - jQuery 与 For 循环切换

javascript - 使用Javascript加载.tpl显示错误

java - 迷宫寻路,二维数组

arrays - 修复虚拟机和描述 rune 件 - 重写 vmx

c++ - 在 C++ 中使用括号表示法将二维数组传递给方法的问题

javascript - 格式化数据和删除键

javascript - TinyMCE 不启动 ajax 加载的文本区域

javascript - 在javascript中将对象值分配为数组