![](/img/trans.png)
[英]How can I find and sort the indexes of the elements of an object in array in javascript
[英]Sort Object Elements in Javascript
我有一个这样的对象:
{
"name":['John','Bob','Ram','Shyam'],
"marks":['64','22','80','32']
}
我必须对名字进行排序。 我排序名字后,必须根据名字匹配标记。
当我使用 sort() 函数时,它只对名称进行排序。 如何对整个对象进行排序?
一种选择是将您的数据结构更改为更易于排序。 例如:
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]}`) })
您可以按名称rel
创建另一个键,其值将是一个对象数组,其中每个对象都有名称name
和mark
键。
创建此数组时,您可以使用sort
函数按顺序对这些对象进行排序
let obj = { "name": ['John', 'Bob', 'Ram', 'Shyam'], "marks": ['64', '22', '80', '32'] } obj.rel = obj.name.map(function(e, i) { return { name: e, mark: obj.marks[i] } }).sort((a, b) => a.name.localeCompare(b.name)) console.log(obj)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.