【发布时间】:2019-08-14 11:31:39
【问题描述】:
在 JavaScript 中,我有一个对象数组和一个输入值,如下所示:
const inputVal = 'foo';
const objArray = [
{title: 'blahaa', type: 'foobar'},
{title: 'foobar', type: 'wohoo'},
{title: 'foobar', type: 'foobar'},
{title: 'foobar', type: 'aaaabaa'},
{title: 'foobar', type: 'moo'},
{title: 'aaah', type: 'foogoo'},
{title: 'foohiii', type: 'foobar'},
{title: 'aaah', type: 'foobar'},
{title: 'foodoo', type: 'aaaabaa'},
{title: 'gaaaaaah', type: 'foobar'},
{title: 'foobar', type: 'foogoo'},
];
如您所见,数组中的所有元素在标题或类型中都有以“foo”开头的属性。此外,所有元素都是唯一的,相同的标题和/或类型可以在多个元素中,但两者的相同组合不能出现两次。
我想按以下方式对这个数组进行排序:
- 标题和类型均以
inputVal开头- 按字母顺序输入
- 标题按字母顺序排列
- 标题以
inputVal开头,但不是类型- 按字母顺序输入
- 标题按字母顺序排列
- 类型以
inputVal开头,但不是标题- 按字母顺序输入
- 标题按字母顺序排列
示例列表将按如下排序:
const objArray = [
{title: 'foobar', type: 'foobar'}, // Criterium 1
{title: 'foohiii', type: 'foobar'}, // Criterium 1
{title: 'foobar', type: 'foogoo'}, // Criterium 1
{title: 'foobar', type: 'aaaabaa'}, // Criterium 2
{title: 'foodoo', type: 'aaaabaa'}, // Criterium 2
{title: 'foobar', type: 'moo'}, // Criterium 2
{title: 'foobar', type: 'wohoo'}, // Criterium 2
{title: 'aaah', type: 'foobar'}, // Criterium 3
{title: 'blahaa', type: 'foobar'}, // Criterium 3
{title: 'gaaaaaah', type: 'foobar'}, // Criterium 3
{title: 'aaah', type: 'foogoo'}, // Criterium 3
];
我尝试将array.prototype.sort(callback) 与几个不同的回调函数一起使用,但我似乎没有得到正确的回调函数。谁能帮帮我?
【问题讨论】:
-
如果
foo不包含在任何地方会发生什么? -
请显示您现有的回调函数
-
您检查过哪些不同的回调?
-
请将您的尝试添加到问题中。您是否尝试过使用
startsWith? -
为什么
aaah低于gaaaaah?在原始顺序中,两者的顺序不同,并且没有规则切换它们。
标签: javascript arrays sorting