使用for循环在Javascript中仅使用重复项创建新数组
我需要编写一个函数来查找数组中多次出现的所有元素,然后在数组中返回这些元素示例:输入:[2,7,4,10,12,27,4,7,7,12,10]输出:[4,7,10,12] 这就是我到目前为止所做的:使用for循环在Javascript中仅使用重复项创建新数组,javascript,arrays,Javascript,Arrays,我需要编写一个函数来查找数组中多次出现的所有元素,然后在数组中返回这些元素示例:输入:[2,7,4,10,12,27,4,7,7,12,10]输出:[4,7,10,12] 这就是我到目前为止所做的: let arr= [4,4,6,8,8,9,10,10] var method1 = function(a) { var counts = []; for(var i = 0; i <= a.length; i++) { for(var j = i; j <
let arr= [4,4,6,8,8,9,10,10]
var method1 = function(a) {
var counts = [];
for(var i = 0; i <= a.length; i++) {
for(var j = i; j <= a.length; j++) {
if(i != j && a[i] == a[j]) {
counts.push(a[i]);
}
}
}
return counts;
}
console.log(method1(arr));
设arr=[4,4,6,8,8,9,10,10]
var method1=函数(a){
var计数=[];
对于(var i=0;i您可以使用和比较元素的and来检查是否发生多次
const method1=(arr)=>[…新集合(arr.filter(elm=>arr.indexOf(elm)!==arr.lastIndexOf(elm))]
console.log(方法1([2,7,4,10,12,27,4,7,7,12,10]))
您使用和比较元素的and来检查是否发生多次
const method1=(arr)=>[…新集合(arr.filter(elm=>arr.indexOf(elm)!==arr.lastIndexOf(elm))]
log(method1([2,7,4,10,12,27,4,7,7,12,10]))
您可以使用哈希表来计算值,如果您有两个计数,则使用此元素
var数组=[2,7,4,10,12,27,4,7,7,12,10],
hash=Object.create(null),
result=array.filter(v=>(hash[v]=(hash[v]| | 0)+1)==2);
console.log(result);
您可以使用哈希表来计算值,如果您有两个计数,则使用此元素
var数组=[2,7,4,10,12,27,4,7,7,12,10],
hash=Object.create(null),
result=array.filter(v=>(hash[v]=(hash[v]| | 0)+1)==2);
console.log(result);
使用一个标记来表示该项已被看到。这可以通过字典来完成
设arr=[4,4,6,8,8,9,10,10];
功能解决方案(arr){
常量标记={};
常量重复项=[]
用于(arr的施工项目){
如果(标记[项目]){
重复。推送(项目);
}否则{
标记[项目]=真;
}
}
返回副本;
}
常数s=溶液(arr);
console.log(s);
使用一个标记来表示该项已被看到。这可以通过字典来完成
设arr=[4,4,6,8,8,9,10,10];
功能解决方案(arr){
常量标记={};
常量重复项=[]
用于(arr的施工项目){
如果(标记[项目]){
重复。推送(项目);
}否则{
标记[项目]=真;
}
}
返回副本;
}
常数s=溶液(arr);
console.log;
您可以使用
这里的想法是:-
- 我们使用两个键
unique
和repeated
初始化op
- 无论何时第一次出现任何数字,我们都将该数字作为键值对初始化
unique
。现在,当同一数字再次出现时,我们将该数字作为键值对设置repeated
属性
- 最后,我们从
repeated
键中取出值
设arr=[2,7,4,10,12,27,4,7,7,12,10]
让op=arr.reduce((op,inp)=>{
if(op.unique[inp]!==未定义){
操作重复[inp]=inp
}否则{
op.unique[inp]=inp
}
返回操作
},{唯一:{},重复:{})
console.log(Object.values(op.repeated))
您可以使用
这里的想法是:-
- 我们使用两个键
unique
和repeated
初始化op
- 无论何时第一次出现任何数字,我们都将该数字作为键值对初始化
unique
。现在,当同一数字再次出现时,我们将该数字作为键值对设置repeated
属性
- 最后,我们从
repeated
键中取出值
设arr=[2,7,4,10,12,27,4,7,7,12,10]
让op=arr.reduce((op,inp)=>{
if(op.unique[inp]!==未定义){
操作重复[inp]=inp
}否则{
op.unique[inp]=inp
}
返回操作
},{唯一:{},重复:{})
console.log(Object.values(op.repeated))
可能重复的nice技术!那么为什么不使用空对象{}
literal而不是对象。create(null)
?它生成一个没有原型的空对象,比如toString
。nice技术!为什么不使用空对象{}
literal而不是Object.create(null)
?它生成一个没有原型的空对象,比如toString
。