按另一个数组中的属性值对对象数组进行排序

时间:2016-11-04 14:21:24

标签: javascript angularjs arrays sorting

今天我被要求在Angular中为数据表添加排序。我试图使用内置的orderBy过滤器,但它看起来不像处理锯齿状数据。

我需要能够对表中的所有列进行排序,尽管我在找到一种方法对数组中的值进行排序时遇到了问题。

以下是我正在处理的简化数据:

[
  {
    "id": 1,
    "some_data": {
        "nested_id": 3,
        "nested_array": [
            {
                "id": 10,
                "some_value": "test3",
                "another_value": 1
            },
            {
                "id": 10,
                "some_value": "test2",
                "another_value": 1
            }
        ]
    }
},
{
    "id": 2,
    "some_data": {
        "nested_id": 5,
        "nested_array": [
            {
                "id": 10,
                "some_value": "test1",
                "another_value": 1
            }
        ]
    }
  }
]

有人能指出我正确的方向我如何编写一个能够在任何属性上对以下数组进行排序的泛型方法?我知道如何根据" id"对它进行排序。和" nested_id",但是" some_value"?

修改

我尝试了类似的东西,但这只适用于外部属性,而不是" nested_array"中的属性。

我想要实现的结果是,当我对" some_value"进行排序时,它应该显示带有" id"的对象。首先是2,然后是" id" of" nested_array"中的对象和对象也应该改变他们的秩序。

function sortBy(prop){
 return function(a,b){
  if( a[prop] > b[prop]){
      return 1;
  }else if( a[prop] < b[prop] ){
      return -1;
  }
  return 0;
 }
}

0 个答案:

没有答案