如何递归排序深层嵌套的对象数组并返回结果-javascript

时间:2018-08-12 15:51:38

标签: javascript arrays sorting dictionary object

我要递归通过深度嵌套的obj 深度嵌套的对象数组进行排序,该对象由id键

此功能有效但是,当我console.log调用该功能时,结果为undefined

如果我console.log在调用此函数之前和之后对其进行排序,则作为参数传递的未排序对象数组会被排序,但这不是从函数调用中返回的- 这是一个变体,我正努力避免。

我尝试过的几件事:

  1. 使用.map()而不是最初调用.reduce(),并且 添加一个空数组作为累加器,从而允许该函数 返回但没有排序:/
  2. 最后返回我正在调用的.map()数组是可行的- 但这似乎是一种hack,并且还将结果包含在 数组。     我已经尝试过将返回值放在不同的位置,但是通常会得到[undefined]或数组数组 包含未定义

      function sortDeepNestedArray(unsortedArray, sortedObj){unsortedArray.map((obj) => {
        const children = obj.Children;
        const Id = obj.Id
        if (children && children.every(o => !o.Children)) {
          Object.keys(sortedObj).map(key => {
            if (Id === key) {
              return children.sort((a, b) => {
                a = sortedObj[key].Children[a.Id]
                b = sortedObj[key].Children[b.Id]
                return a - b
              });
            }
          });
        }
    
        Object.keys(sortedObj).map(key => {
          const isNotBaseCase = children &&
          children.every(o => o.Children) &&
          Id === key &&
          sortedObj[key] &&
          sortedObj[key].Children
    
          if (isNotBaseCase) {
            sortDeepNestedArray(children, sortedObj[key].Children);
          }
        });
      });
    }
    

0 个答案:

没有答案