javascript,lodash :- how to sort array of objects where object having object inside

标签 javascript arrays sorting object lodash

var a = [
   {  
        "subObj1": {  
            "key1":10722905,
            "key2":"0080817626"
        },
        "outerKey1":"abcd",
        "outerKey2":"defg"
    },
    {  
        "subObj1": {  
            "key1":123456,
            "key2":"0987654"
        },
        "outerKey1":"pqrs",
        "outerKey2":"ased"
    }
]

我需要分别使用key1和outerkey1对这个对象数组进行排序。该逻辑已经实现。

_.sortBy(a,'outerKey1') -> 这工作正常。

_.sortBy(a,'key1') -> 这不起作用。

_.sortBy(a,'subObj1.key1') -> 这也不起作用。

有没有办法使用 lodash _.sortBy 函数使用对象的内部键(如 key1 或 key2)对这个对象数组进行排序?

最佳答案

仅使用 JavaScript,您可以将 Array.prototype.sort() 与自定义回调函数一起使用:

var sorted = arr.sort(function(a, b) {
  a.subObj1.key1 - b.subObj1.key1
});

演示:

var arr = [{
    "subObj1": {
      "key1": 10722905,
      "key2": "0080817626"
    },
    "outerKey1": "abcd",
    "outerKey2": "defg"
  },
  {
    "subObj1": {
      "key1": 123456,
      "key2": "0987654"
    },
    "outerKey1": "pqrs",
    "outerKey2": "ased"
  }
];

var sorted = arr.sort(function(a, b) {
  a.subObj1.key1 - b.subObj1.key1
});

console.log(sorted);

编辑:

如果您想使用 lowdash 来完成此操作,则可以将 _.sortBy() 与自定义排序器函数一起使用:

var customSorter = function(obj) {
  return obj.subObj1.key1;
};
var sorted = _.sortBy(arr, customSorter);

演示:

var arr = [{
    "subObj1": {
      "key1": 10722905,
      "key2": "0080817626"
    },
    "outerKey1": "abcd",
    "outerKey2": "defg"
  },
  {
    "subObj1": {
      "key1": 123456,
      "key2": "0987654"
    },
    "outerKey1": "pqrs",
    "outerKey2": "ased"
  }
];

var customSorter = function(obj) {
  return obj.subObj1.key1;
};
var sorted = _.sortBy(arr, customSorter);

console.log(sorted);
<script src="http://underscorejs.org/underscore-min.js"></script>

关于javascript,lodash :- how to sort array of objects where object having object inside,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865532/

相关文章:

javascript - Chrome 和 Safari javascript .sort() 方法的工作方式不同

Excel按升序排序,不包括对角线元素

javascript - 原型(prototype)继承场景中的 jquery 绑定(bind)/触发。无法在正确的对象上触发事件

javascript - GA 使用数组作为关联吗?

javascript - 返回元素的渲染而不换行

javascript - d3 : multiple tasks responding to one event

php - 在 php 中返回空数组

javascript - 如何在 javascript 中打印具有固定列宽的二维数组?

javascript - 是否有一个函数可以在给定键数组和JavaScript中的默认值的情况下创建对象

Linux/unix 重名