我有很多数组。我可以将它们与for循环一起列出,但是,如果这些不同的数组中有相同的元素,我只需要显示每个元素一次。例如;
var array01 = [["Jack","92"],["Tom","74"],["Lily","100"],["Jonah","62"],["Lucy","83"]];
var array02 = [["Tom","94"],["Emma","70"],["Jack","100"],["Arnold","91"],["Kate","53"]];
var array03 = [["Jack","72"],["Tom","84"],["Emma","91"],["Jonah","92"],["Lucy","63"]];
var array04 = [["Emma","88"],["Marshall","82"],["Arnold","68"],["Ted","62"],["Lily","73"]];
var array05 = [["Jonah","87"],["Lucy","86"],["Kate","71"],["Jack","66"],["Lily","93"]];我想将结果从最高值到最低值排序如下:
杰克: 330
莉莉: 266
汤姆: 252
艾玛: 249
约拿: 241
露西: 232
阿诺德: 159
凯特: 124
马歇尔: 82
泰德: 62
发布于 2020-06-27 14:25:56
您可以使用reduce将所有数组合并为一个值,然后应用sort()进行基于score的排序。
var array01 = [["Jack","92"],["Tom","74"],["Lily","100"],["Jonah","62"],["Lucy","83"]];
var array02 = [["Tom","94"],["Emma","70"],["Jack","100"],["Arnold","91"],["Kate","53"]];
var array03 = [["Jack","72"],["Tom","84"],["Emma","91"],["Jonah","92"],["Lucy","63"]];
var array04 = [["Emma","88"],["Marshall","82"],["Arnold","68"],["Ted","62"],["Lily","73"]];
var array05 = [["Jonah","87"],["Lucy","86"],["Kate","71"],["Jack","66"],["Lily","93"]];
var all=[...array01,...array02,...array03,...array04,...array05];
var result = Object.values(all.reduce((acc, [key, val])=>{
acc[key] = acc[key] || {[key]:0};
acc[key][key]+=+val;
return acc;
},{})).sort((a,b)=>Object.values(b)[0]-Object.values(a)[0]);
console.log(result);
https://stackoverflow.com/questions/62611191
复制相似问题