小编ram*_*ram的帖子

递归函数在循环内打印正确的最终结果,但在外部未定义

我需要另一双眼睛。我在这里一定缺少一些小东西。

我输入一个字符串,该字符串被分解为一个单词数组,然后获取每 5 个索引(单词)并将它们连接到自己的索引中。

这是通过递归调用来完成的。

递归的最终调用打印了我在内部寻找的正确结果,但外部的实际返回值是未定义的。

请帮我一下。

const limit = str => {
  const arr = str.split(' ');
  function recursiveLimit(arr, acc = []) {
    if (arr.length !== 0) {
      const toSlice = arr.length < 5 ? arr.length : 5;
      const newArr = arr.slice(toSlice);
      const newAcc = [...acc, arr.slice(0, toSlice).join(' ')];
      recursiveLimit(newArr, newAcc);
    } else {
      console.log('final array: ', acc); // the array I want to return (looks good here)
      return acc; // return it
    }
  }
  return recursiveLimit(arr); // undefined …
Run Code Online (Sandbox Code Playgroud)

javascript arrays recursion

4
推荐指数
1
解决办法
207
查看次数

MongoDB 聚合:将数组属性展平为根数组

我正在开发一个使用 递归查找评论线程的功能$graphLookUp,我几乎已经拥有它了。(虽然方式有点复杂,但它正在起作用!)

我需要的最后一步如下: 不要将嵌套posteriorThread作为根数组()的属性$$ROOT,而是将其合并到根本身。

  • 聚合代码:
const posteriorThread = await Comment.aggregate([
  {
    $match: {
      _id: post.threadDescendant
    }
  },

  {
    $graphLookup: {
      from: 'baseposts',
      startWith: '$threadDescendant',
      connectFromField: 'threadDescendant',
      connectToField: '_id',
      as: 'posteriorThread'
    }
  },

  {
    $unwind: '$posteriorThread'
  },

  {
    $sort: { 'posteriorThread.depth': 1 }
  },

  {
    $group: {
      _id: '$_id',
      posteriorThread: { $push: '$posteriorThread' },
      root: { $first: '$$ROOT' }
    }
  },

  {
    $project: {
      'root.posteriorThread': 0
    }
  },

  {
    $replaceRoot: {
      newRoot: {
        $mergeObjects: [ …
Run Code Online (Sandbox Code Playgroud)

javascript aggregate mongoose mongodb

3
推荐指数
1
解决办法
1051
查看次数

如何在 zsh 中使用正则表达式变量?

如何在 zsh 中使用正则表达式变量,就像在 bash 中一样?我只能让 zsh 使用内联正则表达式。我只是想测试一个只包含字母数字、下划线或句点的字符串,但不包含破折号。正如您所看到的,内联正则表达式和正则表达式变量在 bash 中按预期工作,但 zsh 只匹配内联正则表达式。

\n

重击

\n
#!/bin/bash\n\nRE='[0-9A-Za-z_\\.]'\n\nfor test in $@; do\n    echo -e "bash test: $test"\n\n    if [[ "${test//[0-9A-Za-z_\\.]/}" = "" ]]; then\n        echo -e '\\tmatch inline'\n    fi\n\n    if [[ "${test//$RE/}" = "" ]]; then\n        echo -e '\\tmatch var'\n    fi\n\ndone\n\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x9d\xaf./bash-regex-test.sh foo_bar foo-bar

\n

输出:

\n
\nbash test: foo_bar\n        match inline\n        match var\nbash test: foo-bar\n\n
Run Code Online (Sandbox Code Playgroud)\n

兹什

\n
#!/bin/zsh\n\n\nRE='[0-9A-Za-z_\\.]'\n\nfor test in $@; do\n    echo "zsh test: $test"\n\n    if [[ "${test//[0-9A-Za-z_\\.]/}" = …
Run Code Online (Sandbox Code Playgroud)

regex bash posix zsh

3
推荐指数
1
解决办法
4967
查看次数

git 是否有一个命令可以将工作树重置为 HEAD 但保留索引中的分阶段更改?

我知道有很多关于这个主题的帖子,但我似乎找不到这个具体的答案。

显然,执行此操作的一种方法是git commit分阶段更改 、git reset --hard HEADthen git reset --soft HEAD~、then git add -u,这是相当冗长的。

默认行为reset--mixed实现与我所要求的相反的结果。当然必须有一个单一命令的解决方案,或者至少是一个更好的方法。

git

1
推荐指数
1
解决办法
414
查看次数

标签 统计

javascript ×2

aggregate ×1

arrays ×1

bash ×1

git ×1

mongodb ×1

mongoose ×1

posix ×1

recursion ×1

regex ×1

zsh ×1