(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;
}

 

posted @ 2019-09-26 13:16  Hybelkaniner  阅读(506)  评论(0)    收藏  举报