尝试在数组中查找#个重复项-我的函数返回0?

时间:2018-11-17 09:20:40

标签: javascript arrays

目标是找到数组中重复值的数量。

我在做什么:对于数组中的每个项目,如果不在临时数组中,请将其添加,否则计数+ = 1。

function find_duplicate_in_array(arra1) {
        var temp=[];
        let count = 0;
        arra1.forEach(function (item) {
          if(!temp[item]) {
              temp.push(item);   
           } else {
              count=count+1;
           }
                    });
          console.log(temp);
          return count;
}

    let result=find_duplicate_in_array(["sam", "bob", "sam"]); 
    console.log(result);

实际结果:0;   预期结果:1(TYPO,重复的数字为1);

为什么?

4 个答案:

答案 0 :(得分:1)

我相信您最终想要的结果是1.提供的数组中只有一个重复项,如果再添​​加一个“ sam”,将会有两个。 <Typography component="p" className={classes.Typography}> {incident.incident_description} </Typography> 不在数组内查找值。 temp[item]会起作用,它确实会在数组中查找指定的项目。

答案 1 :(得分:0)

您也可以使用“ Array.filter”,“ new Set”尝试问题,如下所示

function find_duplicate_in_array(arr) {
  return [...new Set(arr.filter((d, i) => i != arr.lastIndexOf(d)))]
}

let res = find_duplicate_in_array(["sam", "bob", "sam", "nitish", "nn", "nn", "nn"])

console.log('Duplicate values ', res)

console.log('Duplicate values length', res.length)

答案 2 :(得分:0)

有几种方法可以实现,这是最简单的方法:

$ht.Add($lastmatch.Name,$lastmatch.Value)

或者您可能尝试用其他语言解决它:例如python中的dict

答案 3 :(得分:0)

您可以收集对象中的索引,并按索引数组的长度过滤值。然后返回由键和索引组成的数组。

function find_duplicate_in_array(array) {
    var temp = {};
    array.forEach((item, index) => (temp[item] = temp[item] || []).push(index));
    return Object
        .entries(temp)
        .filter(([, { length }]) => length > 1);
}

let result = find_duplicate_in_array(["sam", "bob", "sam"]);
console.log(result);