要按照映射中数组项内部的对象对对象数组进行排序,可以使用Array的sort()方法结合比较函数来实现。
假设有一个对象数组arr,每个对象包含一个映射map,map包含一个数组items,我们要按照items中对象的某个属性进行排序,可以按照以下步骤操作:
下面是一个示例代码:
// 对象数组
var arr = [
{ map: { items: [{ prop: 3 }, { prop: 1 }, { prop: 2 }] } },
{ map: { items: [{ prop: 2 }, { prop: 1 }, { prop: 3 }] } },
{ map: { items: [{ prop: 1 }, { prop: 3 }, { prop: 2 }] } }
];
// 比较函数
function compare(a, b) {
var index = 0; // 指定要比较的属性索引
var aValue = a.map.items[index].prop;
var bValue = b.map.items[index].prop;
if (aValue < bValue) {
return -1;
}
if (aValue > bValue) {
return 1;
}
return 0;
}
// 排序
arr.sort(compare);
// 输出排序结果
console.log(arr);
运行以上代码,将按照map中items数组的第一个对象的prop属性进行升序排序。输出结果为:
[
{ map: { items: [{ prop: 1 }, { prop: 3 }, { prop: 2 }] } },
{ map: { items: [{ prop: 2 }, { prop: 1 }, { prop: 3 }] } },
{ map: { items: [{ prop: 3 }, { prop: 1 }, { prop: 2 }] } }
]