You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定属性列表顺序重新排列对象数组的属性顺序

按指定顺序重排对象数组的属性

嘿,要解决这个让data里每个对象属性和displayedColumns顺序对齐的问题,其实用JavaScript的数组和对象操作就能轻松搞定。下面是具体的实现思路和代码:

核心实现代码

// 你的目标属性顺序
const displayedColumns = ['CompanyName','Ticker', 'Id', 'Name', 'ActualTradeDate', 'Spot', 'PreviousTradeDate', 'PreviousSpot', 'FPrice', 'Status'];
// 原始数据数组
const data = [{ Ticker: "AAPL", Status: "Active", CompanyName: "Apple Inc.", ... }, ...];

// 定义处理函数
const reorderObjectProperties = (data, columnOrder) => {
  return data.map(item => {
    const reorderedObj = {};
    // 严格按照指定顺序遍历属性,构建新对象
    columnOrder.forEach(col => {
      // 可选:只保留原对象存在的属性,避免添加undefined
      if (item[col] !== undefined) {
        reorderedObj[col] = item[col];
      }
    });
    return reorderedObj;
  });
};

// 执行处理,得到排序后的数组
const sortedData = reorderObjectProperties(data, displayedColumns);

代码说明

  • 遍历与映射: 用Array.map()遍历每个数据对象,确保每个对象都被处理,同时不会修改原数组(避免副作用)。
  • 按顺序构建新对象: 创建一个空的新对象,严格按照displayedColumns的顺序把原对象的属性一一赋值进去,这样新对象的属性顺序就完全符合你的要求了。
  • 可选的属性存在性检查: 代码里的item[col] !== undefined判断是为了不让原对象里没有的属性出现在新对象里(或者说避免赋值undefined)。如果你的业务需要保留这些缺失的属性(哪怕值是undefined),直接删掉这个判断就行。

效果示例

假设原数据里有这么一个对象:

{ Ticker: "MSFT", Status: "Active", CompanyName: "Microsoft Corp.", Id: "123", Name: "Microsoft Stock" }

经过处理后(去掉属性存在性检查的情况),它会变成:

{ 
  CompanyName: "Microsoft Corp.", 
  Ticker: "MSFT", 
  Id: "123", 
  Name: "Microsoft Stock", 
  ActualTradeDate: undefined, 
  Spot: undefined, 
  PreviousTradeDate: undefined, 
  PreviousSpot: undefined, 
  FPrice: undefined, 
  Status: "Active" 
}

如果保留属性存在性检查,那些undefined的属性就不会出现在新对象里,完全看你的需求调整。

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:00:54