例如现在有数组
groupTypeList = [
{
id: "Producer",
},
{
id: "Researcher",
},
{
id: "Artist",
},
{
id: "Integrator",
},
{
id: "Practitioner",
},
{
id: "Administrator",
},
]
要根据这个数组的id顺序去给下面这个数组排序
types = [
{
"type": "Producer",
"score": 53
},
{
"type": "Researcher",
"score": 48
},
{
"type": "Artist",
"score": 36
},
{
"type": "Administrator",
"score": 24
},
{
"type": "Integrator",
"score": 10
},
{
"type": "Practitioner",
"score": 10
}
],
可以用下面这个方法
sortTypes: function(types){
var _this = this;
// 深拷贝types
var copyTypes = JSON.parse(JSON.stringify(types));
var sortedTypes = types.sort(function(a, b) {
return _this.groupTypeList.findIndex(function(groupType) {
return groupType.id === a.type;
}) - _this.groupTypeList.findIndex(function(groupType) {
return groupType.id === b.type;
});
});
console.log(sortedTypes);
return sortedTypes;
},
解释:
Array.findIndex()
Array.findIndex()
方法用于查找满足给定条件的数组中第一个元素的索引。它将回调函数作为参数,为数组中的每个元素执行该参数,直到满足条件为止。如果元素满足条件,回调函数应返回true,否则返回false。
在上面的方法里,Array.findIndex()
用于查找与type.type属性匹配的groupType的索引。这是通过调用Array.findIndex()
两次来完成的,对于Array.sort()
方法中要比较的每个类型调用一次。然后使用两个索引之间的差异来确定类型数组的顺序。
总的来说,Array.findIndex()
是一种有用的方法,用于查找满足给定条件的数组中元素的索引。它可以用于各种场景,例如根据特定属性对数组进行排序或查找特定元素的索引。