javascript - 在javascript中设置对象数组的顺序

标签 javascript arrays sorting object

我需要找到一种最简单的方法来设置对象数组的顺序。 比如有一个数组:

var array = [
    {id: 1, name: "Matt"},
    {id: 2, name: "Jack"},
    {id: 3, name: "Morgan"},
    {id: 4, name: "Bruce"}
];

我已经提供了

var order = [1,4,2,3];

它指的是数组项的对象id属性。

现在我需要重新排序数组,所以它应该是这样的:

var array = [
    {id: 1, name: "Matt"},
    {id: 4, name: "Bruce"},
    {id: 2, name: "Jack"},
    {id: 3, name: "Morgan"}
]

最佳答案

使用 Array#sort 排序方法和内部自定义排序函数使用 Array#indexOf 获取索引的方法。

var array = [{
  id: 1,
  name: "Matt"
}, {
  id: 2,
  name: "Jack"
}, {
  id: 3,
  name: "Morgan"
}, {
  id: 4,
  name: "Bruce"
}];

var order = [1, 4, 2, 3];


array.sort(function(a, b) {
  // sort based on the index in order array
  return order.indexOf(a.id) - order.indexOf(b.id);
})

console.log(array);

关于javascript - 在javascript中设置对象数组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122855/

相关文章:

Java按第三列的数值对二维字符串数组进行排序

javascript - 在 JavaScript 中获取 json-object 的键

java - Arrays.sort() 和 Arrays.parallelSort() 之间的区别

javascript - 无法使用 $httpBackend 测试 POST $http 请求

javascript - 在 onChangeText 函数中更新数组散列的 TextInput 值

java - 用 dat 文件填充 arrayList

python - 插入排序实现不正确,还是时间复杂度理解不正确?

c - 如何在c中输入一个段落的多行并根据行数排序

javascript - $ ("#id").load 和 $.ajax 之间的区别?

javascript - 更改函数中的变量并保留它的javascript?