是否有一种方法可以根据某个属性排列对象数组,该属性的顺序基于外部数组(不仅仅是字母,数字等)?
例如,假设我有一个临时数组:
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
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用Array#sort
和Array#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)
});