javascript - 根据字符串数组重新排序对象数组?

标签 javascript arrays node.js data-structures ecmascript-6

我有以下数据结构:

const fieldOrder = [
  'title',
  'first_name',
  'last_name',
  'address_1',
  'address_2',
  'city',
  'state',
  'zipcode',
  'country',
]

const fields = [
  {
    name: 'first_name',
    value: 'John'
  },
  {
    name: 'title',
    value: 'Mr'
  }
  ...etc
]

我想根据 name 键在 fieldOrder 数组中的位置对 fields 对象数组进行重新排序。这怎么可能?也许可以使用 Array.sort 方法?

一般来说,这是表示顺序的最佳方式吗?

最佳答案

您可以从字段顺序数组创建对象,然后使用 sort 方法根据该对象中的值进行排序,该对象将成为顺序数组中当前元素的索引。

const fieldOrder = [
  'title',
  'first_name',
  'last_name',
  'address_1',
  'address_2',
  'city',
  'state',
  'zipcode',
  'country',
].reduce((r, e, i) => {
  r[e] = i;
  return r
}, {})

const fields = [{
    name: 'first_name',
    value: 'John'
  },
  {
    name: 'title',
    value: 'Mr'
  }
].sort((a, b) => fieldOrder[a.name] - fieldOrder[b.name])

console.log(fields)

关于javascript - 根据字符串数组重新排序对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60303135/

相关文章:

javascript - 如何从 ios 和 android 的 React Native 中删除文本输入中的下划线

c++ - 如何在编译时使用手动给定的一些元素初始化数组?

node.js - Heroku 上的 Node 调度(不是 Heroku 的 Scheduler 插件)

JavaScript Promises - 创建一组要一起执行的 promise

mysql - 解决 Homebrew 警告而不造成不良影响

javascript - JS/jQuery TypeError : jQuery(. ..).datepicker 不是函数

javascript - 我的导航中有一个嵌套的 ul,为什么它不显示移动列表中的所有内容?

javascript - React - 有人可以做到这一点吗?

javascript - 通过 Json 发送两个列表并在 JavaScript 上从 Array 获取它

arrays - 如何在 Go 中的 slice 或结构中存储不同的结构(不嵌入)