【问题标题】:For loop - Array, indexOf(), concat()For 循环 - 数组、indexOf()、concat()
【发布时间】:2016-07-09 20:41:45
【问题描述】:

我正在从 JS 中的 FreeCodeCamp 解决这个问题。 基本上我需要找到两个数组之间的差异,然后返回一个包含这些值的数组,即字符串和整数。

function diffArray(arr1, arr2) {
  //console.log(arr1.length);
  var newArr = [];
  var dummy = [];
    for (var x=0;x<arr1.length;x++) {
      if (arr2.indexOf(arr1[x]) === -1) {
        newArr = newArr.concat(arr1.slice(x));}}
    for (var y=0;y<arr2.length;y++) {
      if (arr1.indexOf(arr2[y]) === -1 && newArr.indexOf(arr2[y]) === -1) {
        newArr = newArr.concat(arr2.slice(y));
      } 
    }
  console.log(newArr);
  return newArr;
}

diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);

它几乎可以工作。除了这些不起作用:

  • [1, 2, 3, 5], [1, 2, 3, 4, 5] - 提供[4, 5]
  • ["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"] - 提供["pink wool", "dead shrub"]

这些工作:

  • [1, "calf", 3, "piglet"], [1, "calf", 3, 4]
  • [], ["snuffleupagus", "cookie monster", "elmo"]

【问题讨论】:

    标签: loops for-loop concat indexof


    【解决方案1】:

    为什么要使用 slice 和 concat 来提供输出数组?

    • 遍历 arr1
    • 如果 arr1 有一个不在 arr2 中的元素,则将其推送到 newArr
    • 通过 arr2 进行迭代
    • 如果 arr2 有一个不在 arr1 中的元素,则将其推送到 newArr
    • return newArr

    【讨论】:

    • 是的,我真的不知道。猜猜我认为推送只适用于字符串。我改变了它并且它起作用了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多