如何排序对象数组

时间:2017-12-21 08:23:23

标签: javascript arrays sorting object

我需要你的帮助来了解如何使用每个对象内的另一个数组对对象数组进行排序。我有来自api的响应,有如下所示的数组对象:

[
    {
        "name": "[C US Equity] CITIGROUP INC",
        "stats": [
            {
                "label": "DTD",
                "value": null
            },
            {
                "label": "MTD",
                "value": null
            },
            {
                "label": "YTD",
                "value": 0.0536530913792681
            },
            {
                "label": 2016,
                "value": 0.18102519526139493
            },
            {
                "label": 2015,
                "value": -0.012946569977188238
            },
            {
                "label": 2014,
                "value": null
            }
        ]
    }...
]

我应该按照标签“YTD”的值排除空值。欢迎任何帮助

3 个答案:

答案 0 :(得分:1)

您可以使用array#sort方法

var oldArray = [{
  "name": "[C US Equity] CITIGROUP INC",
  "stats": [{
      "label": "DTD",
      "value": null
    },
    {
      "label": "MTD",
      "value": null
    },
    {
      "label": "YTD",
      "value": 0.0536530913792681
    },
    {
      "label": 2016,
      "value": 0.18102519526139493
    },
    {
      "label": 2015,
      "value": -0.012946569977188238
    },
    {
      "label": 2014,
      "value": null
    }
  ]
}];
oldArray[0].stats.sort(function(a, b) {
  return a.label - b.label;

})
console.log(oldArray)

答案 1 :(得分:0)

您可以使用lodash提供的集合排序方法。 https://lodash.com/docs/4.17.4#sortBy

keras_ev

这也是空值的情况。

答案 2 :(得分:0)

我认为this post可能会对您有所帮助 看一看,它教你如何比较工作。

您需要做的就是将JSON内容放入对象数组中,  然后比较YTD的值(制作两个for循环,结果 [i] .stats [j] .label ===' YTD')使数组重新排序。

比较功能如下所示(从上面的链接中提取)

function CompareNumbers( v1, v2 ) {
    if ( v1 < v2 ) return -1;  // v1 goes nearer to the top
    if ( v1 > v2 ) return 1;   // v1 goes nearer to the bottom
    return 0;                  // both are the same
}

当它返回-1(或者有时是假的)时,前一个将被推到数组的前面,同时1或者true会将前一个推到后面。 0(意味着不是真或假,或者你可以自己处理异常,推回或向前)都不会发生
但是,如果你的阵列存在两个YTD&#39;标记值,如果它发生,它将使两个值出现在同一数据中。

这可以帮助您排序数据,而无法直接从数据库服务器获取排序数据。
哦,忘了说,比较功能可以比较整个对象。(当然你需要提取这样的东西---&gt;对象[索引]。[&#39;你需要的东西&#39;]),而不是只有数字。