【问题标题】:(Javascript) How to find unique values from an array and put them into another using booleans?(Javascript)如何从数组中找到唯一值并使用布尔值将它们放入另一个数组中?
【发布时间】:2018-10-21 03:13:27
【问题描述】:

假设我有我的第一个数组 (arrayOne),其值为 [1,2,3,3,4,2]。我需要将此数组与另一个数组进行比较以检查重复值(arrayTwo),然后显示这些值。

因此,最终输出将是:1、2、3、4。

关键是我只能使用非常基本的方法,几乎​​只是布尔值、多个函数和循环。

我该怎么办?在互联网上搜索会出现类似这样的代码:

for (a = 0; a < array1.length; a += 1) {
    for (b = 0; b < array2.length; b += 1) {
        if (array1[a] !== array2[b])
            array2 = array1
        }
    }
}

output = array2   

... 依此类推,但这似乎对我不起作用(注意我的代码并不完全像这样,但经过搜索,这似乎与我正在寻找的内容接近)。

有什么建议吗?

【问题讨论】:

  • 您没有向我们展示array2 的样子。
  • array2 = array1 这将重新分配整个数组的值。您确定不想只更改一个值吗?
  • 可能想要检查这个重复项 - 还有一个使用过滤器 stackoverflow.com/a/9229932/184481 的优雅解决方案

标签: javascript arrays function loops boolean


【解决方案1】:

在内部循环中检查当前项是否等于数组中的一项。如果是,break 内循环。如果b === array2.length,请检查外循环。在这种情况下,相等意味着循环没有中断就结束了,这意味着 - 不是重复的。在这种情况下,将当前项目推送到array2

var array1 = [1, 2, 3, 3, 4, 2];
var array2 = [];
var a,b;

for (a = 0; a < array1.length; a += 1) {
  for (b = 0; b < array2.length; b += 1) {
    if (array1[a] === array2[b]) break;
  }
  
  if(b === array2.length) array2.push(array1[a]);
}

console.log(array2);

【讨论】:

    【解决方案2】:

    我不确定是否理解您的问题,但我认为您希望返回初始数组而没有重复值。

    let array = [1, 2, 3, 3, 4, 2];
    
    function removeDuplicates(input) {
      let result = [];
      
      for (i = 0; i < input.length; i++) {
        let currentValue = input[i];
        
        if (result.indexOf(currentValue) == -1) {
          result.push(currentValue);
        }
      }
      
      return result;
    }
    
    console.log(removeDuplicates(array));

    Here你可以找到更多的实现。

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 2017-02-16
      • 1970-01-01
      • 2013-11-13
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多