Я получил объект, который хотел бы отсортировать, учитывая следующие критерии:
- Сохранить ключ
Keyword
в качестве первой записи - Сохранить выбранный ключ в качестве второго
- Сохраняйте остальные в алфавитном порядке
const obj = {
'Keyword': 'keyword',
'D Rank': 4,
'D URL': 'https://d.example.com',
'D Title': 'I am D',
'A Rank': 1,
'A URL': 'https://a.example.com',
'A Title': 'I am A',
'C Rank': 3,
'C URL': 'https://c.example.com',
'C Title': 'I am C',
'B Rank': 2,
'B URL': 'https://b.example.com',
'B Title': 'I am B',
}
Я пробовал следующее:
const sorting = chosenLetter => {
return (a, b) => {
const letter = a.split(' ')[0]
if (b !== 'Keyword') {
return a < b ? -1 : 1
} else {
if (letter === chosenLetter) {
return -1
}
}
}
}
const order = Object.keys(obj).sort(sorting('C')).reduce((object, key) => {
object[key] = obj[key]
return object
}, {})
console.log(order)
Но независимо от того, что я делаю, я могу получить их только в алфавитном порядке упорядочено, но не может переместить выбранную букву вверх без отмены предыдущего порядка.
Если я передам букву C
функции sorting
, вывод должен быть:
const obj = {
'Keyword': 'keyword',
'C Rank': 3,
'C URL': 'https://c.example.com',
'C Title': 'I am C',
'A Rank': 1,
'A URL': 'https://a.example.com',
'A Title': 'I am A',
'B Rank': 2,
'B URL': 'https://b.example.com',
'B Title': 'I am B',
'D Rank': 4,
'D URL': 'https://d.example.com',
'D Title': 'I am D',
}
Любой идеи?