【发布时间】:2019-04-03 12:32:20
【问题描述】:
我正在尝试使用Array.prototype.sort() 方法对数组或对象重新排序。
我的对象数组可能看起来像(我已经从现实生活场景中删除了不相关的属性):
[
{
context: [
{ value: 'hover' }
]
},
{
context: []
},
{
context: [
{ value: 'active' }
]
},
{
context: [
{ value: 'large' }
]
}
]
我需要根据 context 属性的嵌套对象中包含的值对对象重新排序。
条件是:
- 如果没有上下文对象,则移动到数组的开头
- 如果上下文对象包含
hover值,则移至数组末尾
所以上面的4个对象数组应该从[1, 2, 3, 4]重新排序到[2, 3, 4, 1]
我可以通过以下方式满足第一个条件:
rules.sort((a, b) => {
return (a.context.length - b.context.length);
});
...它根据上下文对象的数量对数组重新排序(从而满足第一个条件),但我不知道如何满足第二个条件。
我能够确定a 或b 数组是否包含具有hover 值的上下文对象,这感觉是一个好的开始,但我不知道从这里开始。 .
rules.sort((a, b) => {
const AIsHover = a.context.some(c => c.value === 'hover');
const BIsHover = b.context.some(c => c.value === 'hover');
return (a.context.length - b.context.length);
});
任何帮助将不胜感激!谢谢
【问题讨论】:
标签: javascript arrays sorting javascript-objects