Javascript 基于同一对象中另一个值的最大/最小值返回值

Javascript 基于同一对象中另一个值的最大/最小值返回值,javascript,d3.js,Javascript,D3.js,具有以下目的: var obj = [ {'a':1, 'b':'jack'}, {'a':2, 'b':'mario'}, {'a':3, 'b':'dan'} ] 使用基于“a”但返回“b”的d3.extent()最正确的方法是什么 下一行 d3.extent(obj, function(d) {return d.a}) 将导致: [1,3] ['jack','dan'] 相反,我想导致: [1,3] ['jack','dan'] 简介:这个问题已经有了一个正确的答案(>1

具有以下目的:

var obj = [
 {'a':1, 'b':'jack'},
 {'a':2, 'b':'mario'},
 {'a':3, 'b':'dan'}
]
使用基于“a”但返回“b”的d3.extent()最正确的方法是什么

下一行

d3.extent(obj, function(d) {return d.a})
将导致:

[1,3]
['jack','dan']
相反,我想导致:

[1,3]
['jack','dan']
简介:这个问题已经有了一个正确的答案(>10k用户可以看到它)被回答者删除-可能是在收到否决票后。根据,我将他的答案复制为社区维基答案,并添加一些我自己的信息。我还投票取消删除他的答案


您无法使用
d3.extent
完成所描述的操作,但可以使用
d3.extent
和一些普通JavaScript轻松完成

但是,如果您只想使用D3方法,可以使用和。简单到:

var myDesiredOutput = [
  obj[d3.minIndex(obj, d => d.a)].b,
  obj[d3.maxIndex(obj, d => d.a)].b
];
以下是演示:

var obj=[{
"a":1,,
“b”:“杰克”
},
{
"a":2,,
“b”:“马里奥”
},
{
"a":3,,
“b”:“丹”
}
];
var myDesiredOutput=[
obj[d3.minIndex(obj,d=>d.a)].b,
obj[d3.maxIndex(obj,d=>d.a)].b
];
console.log(myDesiredOutput)
从2.3版开始,可以使用和,以便根据指定字段分别获取指定iterable的最小/最大元素:

d3.least(obj, d => d.a); // { 'a': 1, 'b': 'jack' }
因此,可以方便地访问最小和最大元素的子字段:

var min = d3.least(obj, d => d.a).b;    // jack
var max = d3.greatest(obj, d => d.a).b; // dan
例如:

var obj=[
{'a':1,'b':'jack'},
{'a':2,'b':'mario'},
{'a':3,'b':'dan'}
];
var min=d3.最小值(obj,d=>d.a).b;
var max=d3.最大值(obj,d=>d.a).b;
控制台日志(分钟);
控制台日志(最大值)