For loop - Array,indexOf(),concat()

时间:2016-07-09 20:41:45

标签: loops for-loop concat indexof

我正在从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]);
&#13;
&#13;
&#13;

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

  • [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"]

1 个答案:

答案 0 :(得分:0)

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

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