在javascript中从对象数组中选择一个特定的值
Selecting a specific value from an array of objects in javascript
我的数据是一个像这样的对象数组:
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
目标。
谢谢!
查看下划线的groupBy函数。你应该能够使用它并将其与map
链接在一起
_.map(
_.groupBy(cars, function(car) {
return car.make + car.model;
}),
function(years, makeModel) {
return _.max(years, function(year) {
return year.year;
});
}
)
JSFiddle
你可以这样做
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 carGroup = _.groupBy(cars, 'make');
for (var property in carGroup) {
if (carGroup.hasOwnProperty(property)) {
var selectedCar = _.max(carGroup[property], function(d) { return d.year; })
}
alert(JSON.stringify(selectedCar));
}
http://jsfiddle.net/btevfik/BEx5a/相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何将一个JavaScript函数回调为多个函数
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 多次调用另一个javascript函数中的javascript函数
- HTML外部javascript加载另一个javascript
- 在一个javascript文件中为整个网站创建标签
- 在任何AJAX调用之前触发一个javascript函数
- 如何用另一个Javascript更改Javascript函数值
- 动态创建一个javascript/jquery多级数组
- 将变量值从一个javascript传递到另一个javascript
- 获取一个javascript对象attr's
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 添加一个javascript函数来下载elfinder上的事件
- 有没有一个Javascript代码可以看到你的缓存有多满
- 使用jenkins从不同文件夹中的文件构建一个javascript文件
- 是否有一个javascript库来解析简单的查询
- 一个javascript实现base64图像编码并将结果写入文本文件
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器