Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript按属性按特定顺序排列对象_Javascript_Object - Fatal编程技术网

使用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)
});

是的,你可以。从谢谢开始,@最后面的!知道了。