假设我在数组中有以下字符串:

let strings = ['cat bone Dog', 'Dogcat bone', 'cat Dog bone'];
.
.
.
.
return sortedString = ['Dogcat bone', 'cat Dog bone', 'cat bone Dog'];


我正在考虑使用localeCompare,但我不知道如何指定按一组特定字符排序,在这种情况下,我想按“狗”排序。

我仍然可以将“狗”这个词附加到其他没有空格的词上,例如“狗猫骨头”。

最佳答案

用空格分隔字符串,然后返回要在数组中查找的单词indexOf的差:



let strings = ['cat bone Dog', 'Dog cat bone', 'cat Dog bone'];
const getDogPos = string => string.split(' ').indexOf('Dog');

strings.sort((a, b) => getDogPos(a) - getDogPos(b));
console.log(strings);





如果要按字符串中子字符串的位置而不是单词的位置排序,则只需使用indexOf而不先拆分:



let strings = ['cat bone Dog', 'Dogcat bone', 'cat Dog bone'];
const getDogPos = string => string.indexOf('Dog');

strings.sort((a, b) => getDogPos(a) - getDogPos(b));
console.log(strings);

10-08 11:36