使用javascript按属性按特定顺序排列对象
是否有一种方法可以根据某个属性排列对象数组,该属性的顺序基于外部数组(不仅仅是字母、数字等) 例如,假设我有一个临时数组:使用javascript按属性按特定顺序排列对象,javascript,object,Javascript,Object,是否有一种方法可以根据某个属性排列对象数组,该属性的顺序基于外部数组(不仅仅是字母、数字等) 例如,假设我有一个临时数组: var tempArray = ["b", "a", "d", "c"]; 和一组对象: var objectArray = [ { name: "John", section: "a" }, { name: "Joe", section: "b" }, { name: "Mike", section: "c"
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
非常感谢您的帮助。您可以使用和来完成Array#sort
对数组进行排序,您可以给它一个函数来调用,该函数接受两个参数,这两个参数是要比较的两个条目,以确定哪个应该在另一个之前Array#indexOf
告诉您数组中某个条目的索引。因此,如果您在objectArray
上使用Array#sort
,并在回调中在tempArray
上使用Array#indexOf
查找每个对象的节
属性的索引,然后比较索引(或者可能只是从第一个对象的索引中减去第二个对象的索引)。类似这样的内容:
var sorted = objectArray.sort(function(a, b){
return tempArray.indexOf(a.section)-tempArray.indexOf(b.section)
});
是的,你可以。从谢谢开始,@最后面的!知道了。