Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过递归将重复的字符串/数字推送到newArr?_Javascript_Arrays_Loops_Recursion - Fatal编程技术网

Javascript 如何通过递归将重复的字符串/数字推送到newArr?

Javascript 如何通过递归将重复的字符串/数字推送到newArr?,javascript,arrays,loops,recursion,Javascript,Arrays,Loops,Recursion,如何使用递归检查数组中的重复数字/字符串,然后将它们推送到一个newArr,并将唯一的数字/字符串推送到newArrTwo 功能rec(那些){ 让[unique,twin]=[[],[]; }; 日志(rec([2,“str”,“arr”,“str”,2,“obj”,“arg”)); 日志(rec([“ref”,“val”,“val”,“val”,“val”,“el”,“el”))更新 我最初误读了说明书。在本节下面,我详细介绍了一个不同但相关的问题的几种解决方案。以下是请求的解决方案:

如何使用递归检查数组中的重复数字/字符串,然后将它们推送到一个newArr,并将唯一的数字/字符串推送到newArrTwo

功能rec(那些){
让[unique,twin]=[[],[];
};
日志(rec([2,“str”,“arr”,“str”,2,“obj”,“arg”));
日志(rec([“ref”,“val”,“val”,“val”,“val”,“el”,“el”))更新
我最初误读了说明书。在本节下面,我详细介绍了一个不同但相关的问题的几种解决方案。以下是请求的解决方案:

const rec=(arr,uniqs=new Set,dups=new Set,[x,…xs]=arr)=>
arr.length==0
? [[…uniqs],…dups]]
:uniqs.has(x)| | dups.has(x)
? 记录(xs,(uniqs.delete(x),uniqs,dups.add(x))
:rec(xs,uniqs.add(x),dups)
日志(rec([2,“str”,“arr”,“str”,2,“obj”,“arg”));
日志(rec([“ref”,“val”,“val”,“val”,“val”,“el”,“el”))更新
我最初误读了说明书。在本节下面,我详细介绍了一个不同但相关的问题的几种解决方案。以下是请求的解决方案:

const rec=(arr,uniqs=new Set,dups=new Set,[x,…xs]=arr)=>
arr.length==0
? [[…uniqs],…dups]]
:uniqs.has(x)| | dups.has(x)
? 记录(xs,(uniqs.delete(x),uniqs,dups.add(x))
:rec(xs,uniqs.add(x),dups)
日志(rec([2,“str”,“arr”,“str”,2,“obj”,“arg”));
日志(rec([“ref”,“val”,“val”,“val”,“val”,“el”,“el”))试试这个(解释):

功能rec(那些){
设t={};
设twin=that.filter((t={},e=>!(1-(t[e]=++t[e]|0));
让unique=thats.filter(x=>!twin.includes(x));
返回[唯一,双];
};
log(JSON.stringify(rec([2,“str”,“arr”,“str”,2,“obj”,“arg”));
log(JSON.stringify(rec([“ref”,“val”,“val”,“val”,“el”,“el”))))试试这个(解释):

功能rec(那些){
设t={};
设twin=that.filter((t={},e=>!(1-(t[e]=++t[e]|0));
让unique=thats.filter(x=>!twin.includes(x));
返回[唯一,双];
};
log(JSON.stringify(rec([2,“str”,“arr”,“str”,2,“obj”,“arg”));
log(JSON.stringify(rec([“ref”,“val”,“val”,“val”,“el”,“el”))))我的尝试:

function rec(array) {

  const result = array.reduce((result, current) => {
    if(result[0].indexOf(current) == -1) {
      result[0].push(current);
    }
    else {
      result[1].push(current);
    }
    return result;
  }, [[], []]);


  result[0] = result[0].filter((elem) => result[1].indexOf(elem) === -1);

  return result;

}
我的尝试:

function rec(array) {

  const result = array.reduce((result, current) => {
    if(result[0].indexOf(current) == -1) {
      result[0].push(current);
    }
    else {
      result[1].push(current);
    }
    return result;
  }, [[], []]);


  result[0] = result[0].filter((elem) => result[1].indexOf(elem) === -1);

  return result;

}

如果你想让别人帮你做作业,至少要好好解释一下。你为这个人付出了巨大的努力!尽管没有任何代码,但至少告诉我们您希望它们如何输出?这不是一个家庭作业(真的),这是为了知道如何通过递归实现,@zerkms“how to it”—它是什么?诚实地阅读你的问题和答案,你真的认为有可能理解你的意思吗?记住,我们希望你在这里做你自己的工作,然后在你做了一些实际的工作和研究,仍然陷于困境时发表文章。所以到目前为止你都做了些什么?如果你想让别人帮你做作业,至少要好好解释一下。你为这个人付出了巨大的努力!尽管没有任何代码,但至少告诉我们您希望它们如何输出?这不是一个家庭作业(真的),这是为了知道如何通过递归实现,@zerkms“how to it”—它是什么?诚实地阅读你的问题和答案,你真的认为有可能理解你的意思吗?记住,我们希望你在这里做你自己的工作,然后在你做了一些实际的工作和研究,仍然陷于困境时发表文章。所以到目前为止,您尝试了什么?请注意,这个问题(由注释重申)专门寻找此函数的递归版本。我假设这是学习递归的一种方式。有许多非递归的方法可以解决这个问题。请注意,这个问题(由注释重申)专门寻找这个函数的递归版本。我假设这是学习递归的一种方式。有很多非递归的方法可以解决这个问题。请注意,这不是递归的,这是专门要求的。请注意,这不是递归的,这是专门要求的。