我有三个数组,如下所示(我有25000个这样的大数据,所以你也可以建议这是一个好的方法,为大量的数据):
var arrayScores = [10, 21, 2, 35, 19, 85, 96, 70, 85, 19, 100, 11, 35, 70, 98, 81, 92];
var arrayGenders = ['M', 'M', 'F', 'F', 'M', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F'];
var arrayNames = ['John', 'Fred', 'Jacque', 'Andrea', 'Andrew', 'Jacob', 'Dylan', 'Diana', 'Rahel', 'Raphael', 'Bob', 'Mariam', 'Fatma', 'Ahmed', 'Barack', 'Joyce', 'Taina'];
因此,我想先按分数(降序),然后按性别(升序),最后按姓名(升序)对这些数组进行排序,如下所示:
1.Bob-100, 2.Barack-98, 3.Dylan-96, 4.Taina-92, 5.Rahel-85, 6.Jacob-85, 7.Joyce-81, 8.Diana-70, 9.Ahmed-70, 10.Andrea-35, 11.Fatma-35, 12.Fred-21, 13.Andrew-19, 14.Raphael-19, 15.Mariam-11, 16.John-10, 17.Jacque-2
这是我的代码,但它没有提供我所期望的,因为我不知道如何排序它(我仍然是一个初学者学习JavaScript),请帮助!
var arrayScores = [10, 21, 2, 35, 19, 85, 96, 70, 85, 19, 100, 11, 35, 70, 98, 81, 92];
var arrayGenders = ['M', 'M', 'F', 'F', 'M', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F'];
var arrayNames = ['John', 'Fred', 'Jacque', 'Andrea', 'Andrew', 'Jacob', 'Dylan', 'Diana', 'Rahel', 'Raphael', 'Bob', 'Mariam', 'Fatma', 'Ahmed', 'Barack', 'Joyce', 'Taina'];
var rank = 1;
arrayScores.forEach((score, index) => {
const gender = arrayGenders[index], name = arrayNames[index];
console.log("Name: "+name+" Gender: "+gender+ " Score: "+score+ " Rank: "+rank);
rank++;
});
1条答案
按热度按时间ctrmrzij1#
您可以在一次运行中构建对象和排序。
这种方法采用与最终属性同名的对象,并从条目创建对象数组。
排序是根据需要的属性进行的。对于直接值,比如性别,你可以用一个对象来表示需要的顺序。这允许添加更多的性别和顺序。