Один из вариантов - изменить структуру данных, чтобы она была более сортируемой.Например:
const data = {
names: ['John','Bob','Ram','Shyam'],
marks: ['64','22','80','32']
}
const people = data.names.map((name, i) => ({
name,
mark: data.marks[i]
}))
const sorted = people.sort((a, b) => a.name.localeCompare(b.name))
console.log(sorted)
Второй вариант - сохранить массив индексов, который вы сортируете на основе данных.Это не меняет ваши исходные структуры, но я не думаю, что это хороший вариант, потому что было бы сложно синхронизировать массивы имен и меток.Например:
const data = {
names: ['John','Bob','Ram','Shyam'],
marks: ['64','22','80','32']
}
const index = Array.from(Array(data.names.length).keys())
index.sort((a, b) => data.names[a].localeCompare(data.names[b]))
console.log(index)
// use the names & marks
index.forEach(i => {
console.log(`${data.names[i]} - ${data.marks[i]}`)
})