(ES6)数据处理常用工具方法收集(更新状态: on)
1. 扁平数组转成tree结构(来源: StackOverflow的印度老哥写的)
1 // Data Set 2 // One top level comment 3 var comments = [{ 4 id: 1, 5 parent_id: null 6 }, { 7 id: 2, 8 parent_id: 1 9 }, { 10 id: 3, 11 parent_id: 1 12 }, { 13 id: 4, 14 parent_id: 2 15 }, { 16 id: 5, 17 parent_id: 4 18 }]; 19 20 const nest = (items, id = null, link = 'parent_id') => 21 items 22 .filter(item => item[link] === id) 23 .map(item => ({ ...item, children: nest(items, item.id) })); 24 25 nest(comments);
2. 二路归并
// divide array function divide(p, r) { return Math.floor((p + r) / 2); } // merge array function merge(A, p, q, r) { const A1 = A.slice(p, q); const A2 = A.slice(q, r); A1.push(Number.MAX_SAFE_INTEGER); A2.push(Number.MAX_SAFE_INTEGER); for (let i = p, j = 0, k = 0; i < r; i++) { if (A1[j] < A2[k]) { A[i] = A1[j]; j++; } else { A[i] = A2[k]; k++; } } } // main method function merge_sort(A, p = 0, r) { r = r || A.length; if (r - p === 1) { return; } const q = divide(p, r); console.log(q) merge_sort(A, p, q); merge_sort(A, q, r); merge(A, p, q, r); return A; }

浙公网安备 33010602011771号