【问题标题】:Sort array based on unknown field values根据未知字段值对数组进行排序
【发布时间】:2017-06-15 20:06:44
【问题描述】:

我有一个如下所示的数组:

  [ { average_cpu: 0.5,
    node_url: 'http://111.11.1111/nodes',
    __v: 0 },
  { average_cpu: 0,
    node_url: 'http://111.11.1111/nodes',
    __v: 0 },
  { average_cpu: 0,
    node_url: 'http://111.11.1111/nodes',
    __v: 0 },
  { average_cpu: 20,
    node_url: 'http://22.22.22/nodes',
    __v: 0 } ]

所以有 4 个不同的对象,有 3 个不同的值。我想要实现的是基于node_url 拆分/分组这个数组 - 所以理想的最终效果是我将拥有两个不同的数组,如下所示:

    var array1 = [ { average_cpu: 0.5,
    node_url: 'http://111.11.1111/nodes',
    __v: 0 },
  { average_cpu: 0,
    node_url: 'http://111.11.1111/nodes',
    __v: 0 },
  { average_cpu: 0,
    node_url: 'http://111.11.1111/nodes',
    __v: 0 } ]

    var array2 = [ { average_cpu: 20,
    node_url: 'http://22.22.22/nodes',
    __v: 0 } ]

但是,我事先不知道 node_url,因此我不能 100% 确定如何执行此操作。我曾尝试使用_.groupBy,但是我无法返回结果,因为我不知道node_url 的确切值

还有其他方法可以实现吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript arrays node.js sorting


    【解决方案1】:

    使用 _.groupBy 你可以这样做:

    var source= [ { average_cpu: 0.5,
        node_url: 'http://111.11.1111/nodes',
        __v: 0 },
      { average_cpu: 0,
        node_url: 'http://111.11.1111/nodes',
        __v: 0 },
      { average_cpu: 0,
        node_url: 'http://111.11.1111/nodes',
        __v: 0 },
      { average_cpu: 20,
        node_url: 'http://22.22.22/nodes',
        __v: 0 } ]
    
    var grouped=_.groupBy(source, function (e) {
      return e.node_url;
      });
    
    //for (let group in grouped) {
    //  console.log('*********Elements in group ' + group+': *******')
    //  console.log(grouped[group]);
    //}
    
    //For nodejs
    Object.keys(grouped).forEach(function(key) {
      var group = grouped[key];
      console.log('*********Elements in group ' + key+': *******')
      console.log(group);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

    【讨论】:

    • 有没有办法使用 node js 实现这一点?由于节点 js 不允许我使用以下内容 - for (let group in grouped)
    • 更新 [nodejs] 兼容性
    • 您先生是个天才!谢谢你。有点题外话,但是有没有办法让我也遍历每个“组”,以便我可以获得每个 node_url 的平均 CPU 数组?例如。 node_url "111.11.1111/nodes" 将有一个 0.5,0,0 的数组,而 node_url "22.22.22/nodes" 将只有 20 个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2021-06-04
    相关资源
    最近更新 更多