Javascript 查找嵌套数组的最大长度

Javascript 查找嵌套数组的最大长度,javascript,arrays,d3.js,Javascript,Arrays,D3.js,我有一个数组,里面有节点和边,每一个都有源、目标和军官数组,我想创建军官数组长度的比例 var officersScale = d3.scale.linear() .domain([1, d3.max(dataset.edges.officers.length, function(d) { return d[0]; })]) .ra

我有一个数组,里面有节点和边,每一个都有源、目标和军官数组,我想创建军官数组长度的比例

  var officersScale = d3.scale.linear()
                                        .domain([1,  d3.max(dataset.edges.officers.length, function(d) { return d[0]; })])
                                        .range([1,10]);
阵列的外观:

var dataset = {"nodes":[{"name":"Anglo American plc"},{"name":"Associated British Foods plc"},{"name":"Admiral Group plc"},{"name":"ARM Holdings plc"},{"name":"Aviva plc"},{"name":"BAE Systems plc"},{"name":"Barclays PLC"},{"name":"British American Tobacco p.l.c."},{"name":"The Berkeley Group Holdings plc"},{"name":"BHP Billiton plc"},{"name":"BP p.l.c."},{"name":"BT Group plc"},{"name":"Centrica plc"},{"name":"Compass Group PLC"},{"name":"Direct Line Insurance Group PLC"},{"name":"easyJet plc"},{"name":"International Consolidated Airlines Group, S.A."},{"name":"3i Group plc"},{"name":"Intertek Group plc"},{"name":"Lloyds Banking Group plc"},{"name":"Merlin Entertainments plc"},{"name":"Pearson plc"},{"name":"Reckitt Benckiser Group plc"},{"name":"Royal Dutch Shell plc"},{"name":"Rexam PLC"},{"name":"Rio Tinto plc"},{"name":"SABMiller plc"},{"name":"Schroders plc"},{"name":"Standard Life plc"},{"name":"SSE plc"},{"name":"Standard Chartered PLC"},{"name":"Tesco PLC"},{"name":"Whitbread PLC"}],"edges":[{"source":0,"target":29,"officers":["MEDORI, Rene"]},{"source":0,"target":30,"officers":["GROTE, Byron Elmer"]},{"source":0,"target":31,"officers":["GROTE, Byron Elmer"]},{"source":1,"target":13,"officers":["BASON, John George"]}]};

首先,你的数据是无效的。存在无效标记,某些内部对象缺少
{

不过,您可以遍历所有军官数组,然后找到最大长度。我希望您知道如何创建缩放,这是为您准备的

var edges = [{"source":0,"target":29,"officers":["MEDORI, Rene"]},
           {"source":6,"target":28,"officers":["GILLIES, Crawford Scott","GRIMSTONE, Gerald Edgar, Sir"]},
           {"source":9,"target":10,"officers":["ANDERSON, Paul Milton"]},
           {"source":9,"target":19,"officers":["FREW, Anita Margaret"]},
           {"source":9,"target":23,"officers":["BRINDED, Malcolm Arthur"]},
           {"source":15,"target":32,"officers":["KENNEDY, Christopher John"]},
           {"source":24,"target":31,"officers":["CHAMBERS, Stuart John"]},
           {"source":28,"target":29,"officers":["GILLIES, Crawford Scott"]},
           "source":30,"target":31,"officers":["GROTE, Byron Elmer"]}];
使用
d3.max

var maxlength = d3.max(edges, function(d) { return d.officers.length; })
var lengths = edges.map(function(edge){
     return edge.officers.length;
});

console.log(lengths);
var maxLength = Math.max(...lengths);

console.log(maxLength);
使用简单的
Array.prototype.map
Math.max

var maxlength = d3.max(edges, function(d) { return d.officers.length; })
var lengths = edges.map(function(edge){
     return edge.officers.length;
});

console.log(lengths);
var maxLength = Math.max(...lengths);

console.log(maxLength);
在单个步骤中,
ES6

maxLength = Math.max(...edges.map(edge=> edge.officers.length));

数组不是一个数组,而是一个对象,它的格式不正确。带有
,“MOYO,Dambisa Felicia,Dr”]},
,警官的部分是:[“GODBEHERE,Ann Frances,M”]},
使JSON无效。@trincot这是我的错,对象很好,我只是删除了一些数据,以便不在这里发布一个巨大的对象。是否有办法使用d3.max实现这一点?我已经更新了我的答案,我希望这就是你要问的