【问题标题】:How to sort object of arrays by nested property in JavaScript如何通过 JavaScript 中的嵌套属性对数组对象进行排序
【发布时间】:2022-11-03 15:42:24
【问题描述】:

我有以下对象:

const obj = {
  A: [{
    capacity: 100
  }, {
    capacity: 100
  }, {
    capacity: 100
  }],
  B: [{
    capacity: 500
  }, {
    capacity: 500
  }, {
    capacity: 500
  }],
  C: [{
    capacity: 300
  }, {
    capacity: 300
  }, {
    capacity: 300
  }]
}

我需要转换为具有相同形状但键按容量排序的对象。需要注意的是,数组(A、B、C)中每个对象的容量在同一个对象内总是相同的。所以我们可以以第一次出现为例

预期结果:

const obj = {
  A: [{
    capacity: 100
  }, {
    capacity: 100
  }, {
    capacity: 100
  }],
  C: [{
    capacity: 300
  }, {
    capacity: 300
  }, {
    capacity: 300
  }],
  B: [{
    capacity: 500
  }, {
    capacity: 500
  }, {
    capacity: 500
  }]
}

我的方法都没有奏效。一个例子:

const sortByPosition = obj => {
   const order = [], res = {};
   Object.keys(obj).forEach(key => {
      return order[obj[key][1]['capacity'] - 1] = key;
   });
   order.forEach(key => {
      res[key] = obj[key];
   });
   return res;
}

console.log(sortByPosition(obj));

这是fiddle

【问题讨论】:

    标签: javascript arrays object functional-programming javascript-objects


    【解决方案1】:

    const obj = {
      A: [ { capacity: 100 }, { capacity: 100 }, { capacity: 100 } ],
      B: [ { capacity: 500 }, { capacity: 500 }, { capacity: 500 } ],
      C: [ { capacity: 300 }, { capacity: 300 }, { capacity: 300 } ]
    };
    
    console.log(Object.fromEntries(Object.entries(obj)
      .sort(([i,a],[j,b])=>a[0].capacity-b[0].capacity)));

    【讨论】:

      猜你喜欢
      • 2011-07-01
      • 2021-09-19
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2016-07-01
      • 2018-02-08
      • 2012-06-22
      相关资源
      最近更新 更多