假设我们有一个对象数组,其中包含嵌套的对象数组,如下所示:
const arr = [ { name: "Cat1", elements : [ { name: name, id: id } ] }, { name: "Cat2", elements : [ { name: name, id: id }, { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat3", elements : [ { name: name, id: id }, { name: name, id: id } ] } ];
我们需要编写一个包含一个这样的数组的JavaScript函数。该函数应对此对象数组进行排序。
在“元素”数组属性中包含更多对象的对象应排名更高。
因此,对数组进行排序后应如下所示:
const output = [ { name: "Cat2", elements : [ { name: name, id: id }, { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat3", elements : [ { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat1", elements : [ { name: name, id: id } ] } ];
为此的代码将是-
const arr = [ { "name": "Cat1", elements : [ { "name": "name", "id": "id" } ] }, { "name": "Cat2", elements : [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat3", elements : [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] } ]; const sorter = (a, b) => { if(a.elements.length > b.elements.length) { return −1; } else { return 1; } } arr.sort(sorter); console.log(JSON.stringify(arr, undefined, 4));
输出结果
控制台中的输出将是-
[ { name": "Cat2", "elements": [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat3", "elements": [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat1", "elements": [ { "name": "name", "id": "id" } ] } ]