我需要按关键字对JavaScript对象进行排序。
因此如下:
{ 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }
将变成:
{ 'a' : 'dsfdsfsdf', 'b' : 'asdsad', 'c' : 'masdas' }
我需要按关键字对JavaScript对象进行排序。
因此如下:
{ 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }
将变成:
{ 'a' : 'dsfdsfsdf', 'b' : 'asdsad', 'c' : 'masdas' }
当前回答
ES6-这是1内衬
var数据={zIndex:99,名称:“Ravan”,年龄:25岁,位置:“架构”,金额:'100k',经理:‘ammu’};console.log(Object.entries(data).sort().reduce((o,[k,v])=>(o[k]=v,o),{}));
其他回答
@sindresorhus有一个很棒的项目,叫做排序键,非常棒。
您可以在此处查看其源代码:
https://github.com/sindresorhus/sort-keys
或者您可以将其与npm一起使用:
$ npm install --save sort-keys
以下也是他的自述文件中的代码示例
const sortKeys = require('sort-keys');
sortKeys({c: 0, a: 0, b: 0});
//=> {a: 0, b: 0, c: 0}
sortKeys({b: {b: 0, a: 0}, a: 0}, {deep: true});
//=> {a: 0, b: {a: 0, b: 0}}
sortKeys({c: 0, a: 0, b: 0}, {
compare: (a, b) => -a.localeCompare(b)
});
//=> {c: 0, b: 0, a: 0}
如前所述,对象是无序的。
然而
你可能会发现这个成语很有用:
var o = { 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' };
var kv = [];
for (var k in o) {
kv.push([k, o[k]]);
}
kv.sort()
然后,您可以遍历kv并执行任意操作。
> kv.sort()
[ [ 'a', 'dsfdsfsdf' ],
[ 'b', 'asdsad' ],
[ 'c', 'masdas' ] ]
使用lodash可以:
some_map = { 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }
// perform a function in order of ascending key
_(some_map).keys().sort().each(function (key) {
var value = some_map[key];
// do something
});
// or alternatively to build a sorted list
sorted_list = _(some_map).keys().sort().map(function (key) {
var value = some_map[key];
// return something that shall become an item in the sorted list
}).value();
只是思考的食物。
一行:
Object.entries(unordered)
.sort(([keyA], [keyB]) => keyA > keyB)
.reduce((obj, [key,value]) => Object.assign(obj, {[key]: value}), {})
const sortObjectByKeys=(对象,asc=true)=>object.fromEntries(Object.entries(Object).sort(([k1],[k2])=>k1<k2^!阿斯克-1 : 1),)常量对象={b:“asdsad”,c:“masdas”,a:“dsfdsfsdf”}const orderedObject=sortObjectByKeys(对象)console.log(orderedObject)