javascript - 从 JavaScript 中的对象数组中选择特定值

标签 javascript d3.js

我的数据是这样的对象数组:

var cars = [ {"year": 2003, "make": "Toyota", "model": "Tercel"}
           , {"year": 2009, "make": "Toyota", "model": "Tercel"}
           , {"year": 1999, "make": "Honda", "model": "Civic"}
           , {"year": 2002, "make": "Honda", "model": "Civic"}
           , {"year": 2004, "make": "Honda", "model": "Civic"}
           , {"year": 2007, "make": "Honda", "model": "Accord"}
           ...
           ]

我只想提取每个品牌和型号的最新版本,以便所选数组如下所示:

var selectedCars = [ {"year": 2009, "make": "Toyota", "model": "Tercel"}
                   , {"year": 2004, "make": "Honda", "model": "Civic"}
                   , {"year": 2007, "make": "Honda", "model": "Accord"}
                   ]

我知道我可以过滤,例如:

var selectedCars = _.max(cars, function(d) { return d.year; })

但这会从整个数组中返回一个对象。我还尝试过循环浏览品牌和型号列表,并仅选择最大年份,但我无法做到这一点。

另一种选择是通过 d3.nest() 之类的方式嵌套数据,其中 make 和 model 作为键,但我不确定如何回到我的 selectedCars 目标。

谢谢!

最佳答案

查看Underscore's groupBy功能。您应该能够使用它并将其与 map

链接起来
_.map(
    _.groupBy(cars, function(car) {
        return car.make + car.model;
    }),
    function(years, makeModel) {
        return _.max(years, function(year) {
            return year.year;
        });
    }
) 

JSFiddle

关于javascript - 从 JavaScript 中的对象数组中选择特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488786/

相关文章:

javascript - 如何在 AngularJS 中使用 jqLit​​e 的方法

javascript - 如何使用 d3.js 为圆环图中的数据创建标签

javascript - 如何使用 d3 在条形图中添加标记

mysql - 如何从 Mondrian 输出生成 JSON 文件

d3.js - 将 D3 与 Elm 结合使用

javascript - JS 在表单允许提交之前输入正确的短语

javascript - 如何使用传递给 React 类的 'data-' Prop ?

javascript - 从输入中获取值并替换

php - Javascript - If 条件由 "&&"分隔(需要建议)

javascript - 带 D3 正交的圆形剪辑和投影