簡體   English   中英

如何使用 JavaScript 對包含父對象和子對象的數組進行排序?

[英]How to sort an array with parents and children objects with JavaScript?

我有一個包含 object 的數組,我需要對它進行排序,首先應該出現父 object,然后是其子對象,依此類推。 但是,當我嘗試在數組中查找父 object 的索引以便將子 object 推到它之后時,findIndex() 方法返回 -1。 有人可以指出這個問題的根源,因為我無法清楚地看到它為什么會這樣做。 我正在使用的代碼和數據數組寫在下面。

 const data = [ { "_id": "0", "parent": null, "title": "All" }, { "_id": "61c0a9cb8f67e811d55abb2d", "parent": null, "title": "Electronics" }, { "_id": "61c0a9cb8f67e811d55abb2e", "parent": { "_id": "61c0a9cb8f67e811d55abb2d" }, "title": "Phones" }, { "_id": "61c0a9cb8f67e811d55abb2f", "parent": { "_id": "61c0a9cb8f67e811d55abb2d" }, "title": "Laptops" }, { "_id": "61c0a9cb8f67e811d55abb30", "parent": { "_id": "61c0a9cb8f67e811d55abb2d" }, "title": "TVs" }, { "_id": "61c0a9cb8f67e811d55abb31", "parent": null, "title": "Literature" }, { "_id": "61c0a9cb8f67e811d55abb32", "parent": { "_id": "61c0a9cb8f67e811d55abb31" }, "title": "Study Literature" }, { "_id": "61c0a9cb8f67e811d55abb33", "parent": { "_id": "61c0a9cb8f67e811d55abb31" }, "title": "Fictional Literature" }, { "_id": "61c0a9cb8f67e811d55abb34", "parent": { "_id": "61c0a9cb8f67e811d55abb31" }, "title": "Comic books" }, { "_id": "61c0a9cb8f67e811d55abb35", "parent": { "_id": "61c0a9cb8f67e811d55abb2e" }, "title": "Smartphones" }, { "_id": "61c0a9cb8f67e811d55abb36", "parent": { "_id": "61c0a9cb8f67e811d55abb35" }, "title": "Accessories" } ]; let parents= []; data.forEach(element => { if(element.parent == null ) { parents.push(element); } else { let parentId = element.parent._id; let index = parents.findIndex(item => { return item._id == parentId; }); parents.splice(index+1, 0, element); }; });

使用item => {parentId == item._id;}確實需要使用“return”: item => {return parentId == item._id;}沒有返回功能基本上是item => null .findIndex()將其視為錯誤,導致 -1

如果您使用沒有大括號的箭頭 function 則暗示返回(但將您限制為單行表達式作為權衡): item => parentId == item._id

來源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM