JavaScript 按字母顺序排列对象数组

1.使用 JavaScript 中的 if 条件和 sort() 函数按字母顺序对对象数组进行排序

		// 如果我们有一个字符串或整数数组,我们可以使用 JavaScript 中的 sort() 函数轻松地对它们进行排序。
		// 例如,让我们使用 sort() 函数按字母顺序对字符串数组进行排序。请参考下面的代码。
		var a = ['banana', 'apple', 'orange']
		var m = a.sort();
		console.log(m); //['apple', 'banana', 'orange']

		// 如果我们有一个对象数组,在使用 sort() 函数对数组进行排序之前,我们必须使用一些条件。
		// 例如,如果我们有一个包含某些人的名字和姓氏的对象数组,我们想根据这些人的姓氏对数组进行排序。
		// 我们必须在 sort() 函数内部传递一个函数,它将比较每个人的姓氏,如果第一人的姓氏小于第二人的姓氏,
		// 则该函数将返回一个负值,如果大于,函数将返回正值;如果两者相等,函数将返回零。请参考下面的代码。
		var a = [{
				FirsName: "Ellie",
				LastName: "Williams"
			},
			{
				FirstName: "Lara",
				LastName: "Croft"
			}
		];

		function SortArray(x, y) {
			if (x.LastName < y.LastName) {
				return -1;
			}
			if (x.LastName > y.LastName) {
				return 1;
			}
			return 0;
		}
		var s = a.sort(SortArray);
		console.log(s); //[{FirstName: "Lara", LastName: "Croft"},{FirsName: "Ellie", LastName: "Williams"}]

2.使用 JavaScript 中的 localeCompare() 和 sort() 函数按字母顺序对对象数组进行排序

查看此链接以获取有关 localeCompare() 函数的更多详细信息。

		// 使用 localeCompare() 函数来比较字符串。它提供了许多其他的比较选项,你可以在函数内部设置这些选项。
		// 例如,让我们使用 localeCompare() 函数比较上述对象数组。请参考下面的代码。
		var a = [{
				FirsName: "Ellie",
				LastName: "Williams"
			},
			{
				FirstName: "Lara",
				LastName: "Croft"
			}
		];

		function SortArray(x, y) {
			return x.LastName.localeCompare(y.LastName);
		}
		var s = a.sort(SortArray);
		console.log(s); //[{FirstName: "Lara", LastName: "Croft"},{FirsName: "Ellie", LastName: "Williams"}]

		// 你还可以将该功能设置为在比较期间忽略任何标点符号和特殊字符。
		// 例如,如果我们在某人的姓氏之前有标点符号,则该函数不会对数组进行排序。
		// 在这种情况下,我们可以使用 localeCompare() 函数并将其设置为在比较期间忽略标点符号。请参考下面的代码。
		var a = [{
				FirsName: "Ellie",
				LastName: ",Williams"
			},
			{
				FirstName: "Lara",
				LastName: "Croft"
			}
		];

		function SortArray(x, y) {
			return x.LastName.localeCompare(y.LastName, 'fr', {
				ignorePunctuation: true
			});
		}
		var s = a.sort(SortArray);
		console.log(s); //[{FirstName: 'Lara', LastName: 'Croft'},{FirsName: 'Ellie', LastName: ',Williams'}]

		// 即使存在标点符号,数组也会根据姓氏排序。你还可以通过将 localeCompare() 函数的灵敏度设置为 base 来忽略字符串中存在的特殊字符,如下所示。
		x.LastName.localeCompare(y.LastName, 'en', {
			sensitivity: 'base'
		});

3.使用 JavaScript 中的 Collator() 和 sort() 函数按字母顺序对对象数组进行排序

		// 使用 Collator() 函数来比较字符串。例如,让我们使用 Collator() 函数比较上述对象数组。请参考下面的代码。
		const collator = new Intl.Collator('en');
		var a = [{
				FirsName: "Ellie",
				LastName: "Williams"
			},
			{
				FirstName: "Lara",
				LastName: "Croft"
			}
		];

		function SortArray(x, y) {
			return collator.compare(x.LastName, y.LastName);
		}
		var s = a.sort(SortArray);
		console.log(s); //[{FirstName: 'Lara', LastName: 'Croft'},{FirsName: 'Ellie', LastName: 'Williams'}]

你还可以通过更改 collator.compare() 函数中两个参数的位置,将排序顺序更改为降序。你还可以使用 Collator() 函数来比较不同语言的字符串;你只需要使用该语言初始化 collat​​or 对象。例如,在上面的代码中,我们使用 en 表示英语。查看此链接以获取有关 Collator() 函数的更多详细信息。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值