根据另一个数组对包含对象的数组进行排序[重复]

2023-12-02

可能的重复:
JavaScript - 根据另一个整数数组对数组进行排序
Javascript - 基于另一个数组对数组进行排序

如果我有一个像这样的数组:

['one','four','two']

还有另一个像这样的数组:

[{
  key: 'one'
},{
  key: 'two'
},{
  key: 'four'
}]

我将如何对第二个数组进行排序,以便它是key属性遵循第一个的顺序?在这种情况下,我想要:

[{
  key: 'one'
},{
  key: 'four'
},{
  key: 'two'
}]

我们可以使用 sort() 函数来完成此操作,方法是向它传递一个进行比较的自定义函数。该函数必须返回给定的 3 个可能值a or b比较:

return -1 if a索引低于b

return 0 if a被认为等于b

return 1 if a索引大于b

考虑到这一点,我们可以定义一个如下的函数:

function sortFunction(a,b){
    var indexA = arr.indexOf(a['key']);
    var indexB = arr.indexOf(b['key']);
    if(indexA < indexB) {
        return -1;
    }else if(indexA > indexB) {
        return 1;
    }else{
        return 0;       
    }
}

该函数将接受您在数组中定义的对象,并查找该值在数组中的位置arrarray,这是您要比较的数组。然后它比较索引,并根据需要返回值。

我们通过将函数传递到sort()函数如下:

testArray.sort(sortFunction)

where testArray是您要排序的数组。

您可以看一下这里,我在此处执行了此示例,您可以看到数组中的第二个对象在调用排序函数之前和之后向您“发出警报”。http://jsfiddle.net/Sqys7/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据另一个数组对包含对象的数组进行排序[重复] 的相关文章

随机推荐