gpt4 book ai didi

javascript - d3- 在嵌套数组中查找最大键/值

转载 作者:行者123 更新时间:2023-11-29 16:35:14 24 4
gpt4 key购买 nike

我有一个包含 3 个嵌套数组的数组,每个数组包含 3 个对象。我使用什么 d3 语法来查找所有数据中 data1 的最大值?

是不是有点像,

function find_max(all_data, i){
return d3.max(all_data[i].data1)
}

这是我的数据结构:

all_data = [
[{data1:2, age:6},
{data1:4, age:5},
{data1:5, age:4}],

[{data1:7, age:2},
{data1:1, age:9},
{data1:0, age:8}],

[{data1:5, age:9},
{data1:6, age:9},
{data1:8, age:6}]
]

基本上,我希望它返回 8。感谢您的帮助!!我不太清楚。

最佳答案

我们可以混合使用 d3.maxArray.map操作:

d3.max(all_data.map(d => d3.max(d.map(n => n.data1)))) // 8

这会使用 d3.max 找到每个嵌套数组的最大值,并使用 map 操作将对象的嵌套数组转换为 的数组data1 值(第一个嵌套数组的 [2, 4, 5])。

[{data1:2, age:6}, {data1:4, age:5}, {data1:5, age:4}].map(n => n.data1) // [2, 4, 5]
d3.max([{data1:2, age:6}, {data1:4, age:5}, {data1:5, age:4}].map(n => n.data1)) // 5

对于每个子最大值,我们再次使用 d3.max 找到全局最大值。

var all_data = [
[{data1:2, age:6},
{data1:4, age:5},
{data1:5, age:4}],

[{data1:7, age:2},
{data1:1, age:9},
{data1:0, age:8}],

[{data1:5, age:9},
{data1:6, age:9},
{data1:8, age:6}]
];

console.log(d3.max(all_data.map(d => d3.max(d.map(n => n.data1)))));
<script src="https://d3js.org/d3.v5.min.js"></script>


如果您对 flatMap 的概念感到满意,你也可以这样做:

d3.max(all_data.flatMap(d => d.map(n => n.data1))); // 8

但这需要为数组创建一个 flatMap 函数:

Array.prototype.flatMap = function(lambda) {
return Array.prototype.concat.apply([], this.map(lambda));
};

flatMap 操作将嵌套列表展平:

all_data.flatMap(d => d.map(n => n.data1)) // [2, 4, 5, 7, 1, 0, 5, 6, 8]

最后,如果您想同时获得最大值和最小值,我们可以混合使用 Array.flatMapd3.extent。 :

var [min, max] = d3.extent(all_data.flatMap(d => d.map(n => n.data1)));

关于javascript - d3- 在嵌套数组中查找最大键/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51810621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com