und*_*oid 1 javascript arrays sorting
我有一个具有多个属性的对象数组.给出以下数组:
var people = [
{name: "allen", age: 33, color:"green"},
{name: "jon", age: 23, color:"blonde"},
{name: "silver", age: 54, color:"yellow"},
{name: "james", age: 52, color:"grey"},
{name: "flint", age: 25, color:"pink"},
{name: "beilly", age: 31, color:"blonde"},
{name: "bwones", age: 47, color:"grey"},
{name: "sas", age: 35, color:"green"},
{name: "jackson", age: 234, color:"yellow"},
{name: "leonsardo", age: 12, color:"brown"},
{name: "dicaeprio", age: 73, color:"pink"},
{name: "sylvfester", age: 35, color:"blonde"},
{name: "alleen2", age: 33, color:"green"},
{name: "jofn2", age: 23, color:"blonde"},
{name: "sdilver2", age: 54, color:"yellow"},
{name: "jamaes2", age: 52, color:"grey"}
];
Run Code Online (Sandbox Code Playgroud)
我需要通过color属性对这个数组进行排序,但是以一种特殊的方式排序,首先是by green,然后是by yellow,然后是brownby pink,然后是grey最后一个blonde.我在这里和这里阅读,但很难根据我的需要生成压实机.由于这只是一个演示阵列而我的真实数据将是一个更大的数组,因此排序机制应该比它更快 n^2.
这是你的比较器
var sortOrder = {green: 0, yellow: 1, brown: 2, pink: 3, grey: 4, blonde: 5};
people.sort(function (p1, p2) {
return sortOrder[p1.color] - sortOrder[p2.color];
});
Run Code Online (Sandbox Code Playgroud)