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实现这一点?我已经更新了我的答案,我希望这就是你要问的