在JavaScript中,对象数组的排序通常基于对象的某个属性值。如果你有两个对象数组,且它们共享相同的字段,你可以根据这个字段对它们进行排序。
Array.prototype.sort()
)经过优化,可以高效地对数组进行排序。假设我们有两个对象数组arr1
和arr2
,它们都包含一个名为value
的字段,我们想根据这个字段对它们进行排序。
let arr1 = [{value: 3}, {value: 1}, {value: 2}];
let arr2 = [{value: 6}, {value: 4}, {value: 5}];
// 对arr1进行升序排序
arr1.sort((a, b) => a.value - b.value);
console.log(arr1); // 输出: [{value: 1}, {value: 2}, {value: 3}]
// 对arr2进行降序排序
arr2.sort((a, b) => b.value - a.value);
console.log(arr2); // 输出: [{value: 6}, {value: 5}, {value: 4}]
问题1:排序结果不符合预期。
问题2:数字排序时出现意外的字符串排序行为。
sort()
方法默认将数组元素转换为字符串进行比较。问题3:排序过程中修改了原始数组。
sort()
方法会直接修改传入的数组。slice()
方法创建一个数组的副本,然后对副本进行排序。let arrCopy = arr1.slice();
arrCopy.sort((a, b) => a.value - b.value);
console.log(arrCopy); // 输出排序后的副本
领取专属 10元无门槛券
手把手带您无忧上云