我有很多数组。我可以将它们与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
答案 0 :(得分:2)
您可以使用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);