我有一个二维数组:
var beatlesComposers = [
['George', 22 ],
['John', 71 ],
['Paul', 71 ],
['Ringo', 2 ]
];
第一个元素是作曲家的名字,第二个元素代表该作曲家写的歌曲数量。
如何使用最后写入的最大歌曲数量返回作曲家的名字(在本例中'保罗'是71)?
答案 0 :(得分:2)
您可以使用reduce
查看每个数组的第二个元素并找到最高元素。在比较中使用>=
而不是>
会使得最新元素在关联时获胜。
var beatlesComposers = [['George', 22 ],['John', 71 ],['Paul', 71 ],['Ringo', 2 ]];
var mostWritten = beatlesComposers.reduce(function(prev, curr){
return curr[1] >= prev[1] ? curr : prev;
});
答案 1 :(得分:0)
你总是可以做一个基本的数组排序:
var beatlesComposers = [['George', 22 ],['John', 71 ],['Paul', 71 ],['Ringo', 2 ]];
beatlesComposers.sort(function(artist1,artist2){
return artist2[1]-artist1[1]
});
beatlesComposers[0]; //This is now ['John', 71]
现在,#34; beatlesComposers"中的第一个元素将成为歌曲数量最多的艺术家。