在 vis.js 库中,如何获取 "id" 字段中的最大值?

In the vis.js library, how do I get the max value in the "id" field?

我发现了 vis.js,尤其是网络模块。

我需要获取节点数据集 "id" 字段的最大值:

var nodes = new vis.DataSet([ {id: 1, label: "Node 1"}, {id: 2, label: "Node 2"}, {id: 3, label: "Node 3"}]);

到目前为止我能做的最好的事情是使用 forEach 循环:

var max=0;
nodes.forEach(function(el){j=parseInt(el.id);if(j!=NaN && j>max){max=j;}});
console.log("max: ", max);

在我看来这不是解决问题的方法。 我在 vis 的数据集 (https://visjs.github.io/vis-data/data/dataset.html) 的文档中看到了一个 max(field) 方法:

max(field) [Object|null] Find the item with maximum value of specified field. Returns null if no item is found.

但是尽管我听起来很愚蠢,但我就是无法让它工作。 我试过了:

console.log("max: ", nodes.max('id'));
console.log("max: ", nodes.max(node => node.id));
console.log("max: ", nodes.max(node => node['id']));

如何简单地获取数据集所有条目的字段 'id' 的最大值?

[编辑] 上面示例中的 ID 是数字 ({id: 1, ...})。
在我的例子中,它们是字符串 ({id: '1', ...}),而这似乎正是问题所在。

尝试这一行:

nodes.max('id').id

nodes.max('id') 将 return 具有最大 id 值的节点。

经过大量浪费时间,我终于发现 max() 与数字 ID 完美配合。
当时我的第一个想法是:阅读文档可以节省我的时间...

...但是检查 https://visjs.github.io/vis-network/docs/network/nodes.html ,它明确地将 ID 定义为字符串:

[name:] id [type:] String [default:] undefined [description:] The id of the node. The id is mandatory for nodes and they have to be unique. This should obviously be set per node, not globally.

所以请注意:它应该是一个字符串,但如果它是一个字符串,某些功能将不起作用。
如果我仍然遗漏了什么,我很乐意阅读您的评论。