假设我在数组中有以下字符串:
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);