使用javascript按特定顺序按属性排列对象

时间:2014-08-04 08:51:31

标签: javascript object

是否有一种方法可以根据某个属性排列对象数组,该属性的顺序基于外部数组(不仅仅是字母,数字等)?

例如,假设我有一个临时数组:

var tempArray = ["b", "a", "d", "c"];

和一系列对象:

var objectArray = [
    { name: "John",
      section: "a" },
    { name: "Joe",
      section: "b" }, 
    { name: "Mike",
      section: "c" },
    { name: "Mark",
      section: "d"}
];

我可以重新排列 objectArray ,以便对象顺序跟随 tempArray 的内容,从而将objectArray返回为:

objectArray = [
    { name: "Joe",
      section: "b" },
    { name: "John",
      section: "a" }, 
    { name: "Mark",
      section: "d" },
    { name: "Mike",
      section: "c"}
];  // desired output

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用Array#sortArray#indexOf执行此操作。 Array#sort对数组进行排序,你可以给它一个函数来调用它接受两个参数,这两个参数是要比较的两个条目,以确定哪个应该在另一个之前。 Array#indexOf告诉您数组中条目的索引。因此,如果您在Array#sort上使用objectArray,并在回调中使用Array#indexOf上的tempArray来查找每个对象的section属性的索引,那么请比较索引(或者可能只是从第一个索引中减去第二个对象的索引)。

答案 1 :(得分:0)

类似的东西:

var sorted = objectArray.sort(function(a, b){
return tempArray.indexOf(a.section)-tempArray.indexOf(b.section)
});