我正在使用jQuery来解析员工的JSON文件,其中包含他们的名称,部门,子部门和其他一些细节。基于一个属性的自定义优先级对数组进行排序
如:
[
{
"LAST":"Betsy",
"FIRST":"Jackson",
"DEPT":"Customer Service",
"SUBDEPT":"Tech Support",
"JOINED":"02/94",
"TITLE":"Technical Customer Service Representative",
"RESIDENCE":"Someplace",
"HOBBIES":"Reading, Walking, Sleeping"
},
{
"LAST":"Sally",
"FIRST":"Smith",
"DEPT":"Customer Service",
"SUBDEPT":"Installation Customer Service Representative",
"JOINED":"01/04",
"TITLE":"Technical Customer Service Representative",
"RESIDENCE":"Someplace",
"HOBBIES":"Reading, Walking, Sleeping"
},
]
我试图建立一个应用程序,用户可以在雇员的名字点击,看看在该员工所在部门每一位员工都表示结果的刷新,通过举办分部门,并滚动到给定的员工。
我已成功生成员工姓名列表,其中data- *属性用于保存其部门和子部门。当点击员工姓名时,我能够第二次解析JSON文件并返回同一部门中的所有员工,然后构建网格,然后将整个匹配的员工对象推入一个名为“结果“。
注:部门=数据部门通过jQuery选择传递..
$.each(data, function(i, employee) {
if (employee.DEPT == dept) {
var employeetext = '<span class="name">'
+ employee.FIRST+' '+ employee.LAST+'</span>',
employee.JOINED,
employee.TITLE,
employee.RESIDENCE,
'...',
employee.HOBBIES;
$('#employees').append('<div class="employee_block"><img src="" width="85" height="113">' + employeetext + '.</div>');
results.push(employee);
}
}) // end stepping through employees
然而,我需要基于从所述阵列的新的排序顺序上建立网格,而不是y中的字母正被现在使用。我需要根据不是按字母顺序排列的优先级来分割结果,而是希望在单独对象中定义的自定义排序(这是否为“关系数据库”),例如:
var subdeptorder = [
{
"DEPT": "Marketing",
"SUBDEPTS": ["Administration", "Purchasing", "Advertising", "PR"]
},
{
"DEPT": "Sales",
"SUBDEPTS": ["Administration", "Business Development"]
}
]
所以我需要根据员工的部门(以及部门的子部门的顺序)对“结果”数组进行排序。
如何编写比较函数以根据在单独对象中建立的优先级重新对“结果”数组进行排序?
使用.sort并引用相对于当前正在排序的节点返回-1 0或1的逻辑中的单独对象。 –
谢谢。我应该提到这将是我第一次使用.sort,所以任何addl。指导表示赞赏! –
@JonathanLonowski:如果有的话,它是[自定义顺序排序]的副本(http://stackoverflow.com/questions/14872554/sorting-on-a-custom-order)! – Bergi