Joh*_*ohn 37 javascript sorting
我想创建一个(非匿名)函数,按键按字母顺序对对象数组进行排序name.我只编写直接的JavaScript代码,所以框架至少对我没用.
var people = [
{'name': 'a75', 'item1': false, 'item2': false},
{'name': 'z32', 'item1': true, 'item2': false},
{'name': 'e77', 'item1': false, 'item2': false}
];
Run Code Online (Sandbox Code Playgroud)
Dav*_*ner 111
这个怎么样?
var people = [
{
name: 'a75',
item1: false,
item2: false
},
{
name: 'z32',
item1: true,
item2: false
},
{
name: 'e77',
item1: false,
item2: false
}];
function sort_by_key(array, key)
{
return array.sort(function(a, b)
{
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
people = sort_by_key(people, 'name');
Run Code Online (Sandbox Code Playgroud)
这允许您指定要对数组进行排序的键,以便您不限于硬编码的名称排序.它将对所有共享属性的对象数组进行排序,这些属性用作键.我相信那就是你要找的东西?
这里有一个jsFiddle:http://jsfiddle.net/6Dgbu/
pim*_*vdb 26
您可以使用以下函数对数组([...])进行排序.sort:
var people = [
{'name': 'a75', 'item1': false, 'item2': false},
{'name': 'z32', 'item1': true, 'item2': false},
{'name': 'e77', 'item1': false, 'item2': false},
];
var sorted = people.sort(function IHaveAName(a, b) { // non-anonymous as you ordered...
return b.name < a.name ? 1 // if b should come earlier, push a to end
: b.name > a.name ? -1 // if b should come later, push a to begin
: 0; // a and b are equal
});
Run Code Online (Sandbox Code Playgroud)
这本身不是JSON问题.它是一个javascript数组问题.
试试这个:
people.sort(function(a,b){
var x = a.name < b.name? -1:1;
return x;
});
Run Code Online (Sandbox Code Playgroud)
我使用 lambda 修改了 @Geuis 的答案并首先将其转换为大写:
people.sort((a, b) => a.toLocaleUpperCase() < b.toLocaleUpperCase() ? -1 : 1);
Run Code Online (Sandbox Code Playgroud)