检查数组中的多个数字

我需要创建一个函数来检查数组中的所有数字并将它们打印出来。我的想法与此类似:


  var array = [15,22,88,65,79,19,93,15,90,38,77,10,22,90,99]; 

  var string = "";

  var len = array.length;

声明变量后,我开始循环它们:


  for (var i = 0; i < len; i ++) {

     for (var j = 0; j < len; j ++) {

        //console.log(array[i], array[j]);

     }

  }

控制台按以下顺序打印我的值:


3 3

3 6

3 67

. .

6 3

6 6

6 67

. .

我想创建一个 if 语句,检查 array[i] 是否等于 array[j] 然后将内容推送到一个新字符串中。


慕勒3428872
浏览 121回答 2
2回答

九州编程

您需要在外循环中迭代,直到最后一项之前的元素和内循环中从实际索引加一开始,以防止检查相同的元素。如果发现重复,将值推送到duplicates数组。var array = [15, 22, 88, 65, 79, 19, 93, 15, 90, 38, 77, 10, 22, 90, 99],&nbsp; &nbsp; len = array.length,&nbsp; &nbsp; i, j,&nbsp; &nbsp; duplicates = [];for (i = 0; i < len - 1; i++) {&nbsp; for (j = i + 1; j < len; j++) {&nbsp; &nbsp; if (array[i] === array[j]) duplicates.push(array[i]);&nbsp; }}console.log(duplicates);使用更短的方法 Setvar array = [15, 22, 88, 65, 79, 19, 93, 15, 90, 38, 77, 10, 22, 90, 99],&nbsp; &nbsp; found = new Set,&nbsp; &nbsp; duplicates = array.filter(v => found.has(v) || !found.add(v));console.log(duplicates);

慕莱坞森

您还可以将 Set与Array.filter和Array.indexOf 一起使用:let data = [15,22,88,65,79,19,93,15,90,38,77,10,22,90,99]let r = new Set(data.filter((v, i, a) => a.indexOf(v) !== i))console.log(Array.from(r))这个想法是将项目过滤到找到多个索引的项目,然后将它们添加到集合中。由于 Set 仅存储唯一项目,因此它会处理重复项并获得最终结果。我们利用 Array.filter 为 iteratee 函数提供 3 个参数 -&nbsp;value (v),当前index (i)和实际的事实array (a)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript