我有很多数组。 我可以将它们与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
您可以使用reduce
将所有数组合并为一来求和值,然后应用sort()
根据score
进行排序:
null
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);