计算数组Javascript中的重复值
我正在努力练习我的算法技巧。我知道已经有一个算法写出来了,我只是想尝试一下我自己,看看我能有多接近 输入:计算数组Javascript中的重复值,javascript,algorithm,Javascript,Algorithm,我正在努力练习我的算法技巧。我知道已经有一个算法写出来了,我只是想尝试一下我自己,看看我能有多接近 输入: arr1 = ['asd','ew','lol','asd'] 预期产出: { asd: 2, ew: 1, lol: 1 } 这是我的代码: arr1=['asd','ew','lol','asd'] arr2=[] 结果={} 函数checkIfExists(word){ 如果(arr2.length!=0){ 对于(i=0;i
arr1 = ['asd','ew','lol','asd']
预期产出:
{ asd: 2, ew: 1, lol: 1 }
这是我的代码:
arr1=['asd','ew','lol','asd']
arr2=[]
结果={}
函数checkIfExists(word){
如果(arr2.length!=0){
对于(i=0;i log(results)
您使用了i
作为全局变量,所以不要使用for two循环。另一个错误是在增量算法中,它向结果数组中添加了超过需要的计数。所以试试看:
arr1=['asd','ew','lol','asd']
arr2=[]
结果={}
函数checkIfExists(word){
如果(arr2.length!=0){
var=false;
对于(var j=0;j log(results)
您使用了i
作为全局变量,所以不要使用for two循环。另一个错误是在增量算法中,它向结果数组中添加了超过需要的计数。所以试试看:
arr1=['asd','ew','lol','asd']
arr2=[]
结果={}
函数checkIfExists(word){
如果(arr2.length!=0){
var=false;
对于(var j=0;j console.log(results)
我立即确定了三个问题,您可能想问它们
- 这句话最适合我说:
第一个问题是您没有使用
来声明var
i
- 该循环可能旨在定位
中的项目,也会修改arr2
很多强>arr2
- 首先,将循环习惯用法从(i=…)的
更改为(var i=…)
- 想想这个循环的目的。如果打算在
中定位项目,则不需要修改arr2
。也许你不需要这个循环;arr2
- 您可能会使用或替换整个循环李>
- 您可能可以使用
代替整个函数李>函数checkIfExists(word){results[word]=arr1.filter(函数(w){return w==word;}).length;}
- 在设计函数时,您似乎可以使用一些更高级别的意识,因此,尝试将您的头脑集中在以下代码中的一些元素上可能是一个好主意:
有三个问题我马上就确定了,你可能想问
- 这句话最适合我说:
第一个问题是您没有使用
来声明var
i
- 该循环可能旨在定位
中的项目,也会修改arr2
很多强>arr2
- 首先,将循环习惯用法从(i=…)的
更改为(var i=…)
- 想想这个循环的目的。如果打算在
中定位项目,则不需要修改arr2
。也许你不需要这个循环;arr2
- 您可能会使用或替换整个循环李>
- 您可能可以使用
代替整个函数李>函数checkIfExists(word){results[word]=arr1.filter(函数(w){return w==word;}).length;}
- 在设计函数时,您似乎可以使用一些更高级别的意识,因此,尝试将您的头脑集中在以下代码中的一些元素上可能是一个好主意:
好的,这是你的代码。你面临的问题是什么。问题是什么?第一个问题是您没有使用
var
来声明i
。这会导致两个循环相互干扰。但即使你解决了这个问题,你也不会得到想要的结果。到目前为止,您在调试代码方面做了哪些工作?你有什么特别的问题吗?@Manish意图应该很清楚:有一个预期的结果和一个实际的结果。标题揭示了代码应该做什么。这比关于堆栈溢出的大多数问题提供的信息都要多。@Xufox同意(和+1d),但我认为Manish有一个观点。。。这里没有问题(用问号表示)!霍
var arr1 = ['asd','ew','lol','asd'];
var result = arr1.reduce(function(result, w) { result[w] = result[w] || 0;
result[w]++;
return result; }, {}));
console.log(result);