JavaScript按属性值sorting字典

我在下面显示的JavaScript中有一个字典样式的数组对象,并希望通过属性对它进行sorting。 这将如何完成? 我知道类似的问题已经得到解答,但我认为我的结构是不同的。 简单地运行array.sort(compare)不适合我,因为我没有索引整数。 谢谢!

 var myData = { "userOne": { "firstName": "Felix", }, "userTwo": { "firstName": "Bob", }, "userThree": { "firstName": "Anna", } } 

我希望上面的数组myDatafirstNamesorting,以便首先出现带有Anna的对象,然后是Bob ,接着是Felix 。 非常感谢!!

你可以使用可迭代的ES6映射:

 var myData = new Map(); myData.set('userOne', {'firstName': 'Felix'}); myData.set('userTwo', {'firstName': 'Bob'}); myData.set('userThree', {'firstName': 'Anna'}); function sortByProp(data, prop) { return new Map([...data.entries()].sort((a, b) => a[1][prop] > b[1][prop])); }; console.log(sortByProp(myData, "firstName")); 

不幸的是,你的数据格式是不可能的。 我们在这里处理JS对象。 根据定义:

一个对象是Objecttypes的成员。 它是一个无序的属性集合,每个属性都包含一个原始值,对象或函数。 存储在对象属性中的函数称为方法。

如果你把它作为对象的数组,这可能会有所帮助。

这里有一些代码可以解决你的底层问题,通过创build一个数组而不是一个对象来填充内部对象。

 arrayOfSortedObjects = Object.keys(myData).sort(function(a,b) { return myData[a].firstName.localeCompare(myData[b].firstName); }).map(function(k) { return myData[k]; });