【问题标题】:Removing repeated values from array with multiple arguments从具有多个参数的数组中删除重复值
【发布时间】:2016-08-05 21:39:00
【问题描述】:

这些是我想要完成的全部说明:

您将获得一个初始数组(destroyer 函数中的第一个参数),然后是一个或多个参数。从初始数组中删除与这些参数具有相同值的所有元素。

这是我的解决方案:

function destroyer(arr) {     
  var args = Array.prototype.slice.call(arguments);
  args.slice(0,1);
  return arr.filter(function(elements) {
    return args.indexOf(element) === -1;
  });
}

请记住,可以有任意数量的参数(不仅仅是 2 个或 3 个)。
我的解决方案不起作用。我当前的解决方案有什么问题,我该如何通过解释来解决它?

【问题讨论】:

  • 你能提供示例输入和输出吗?
  • @DmitriPavlutin 不是工作面试。只是为了个人利益而进行的在线培训。
  • @gurvinder372 ([1, 2, 3, 1, 2, 3], 2, 3)
  • @victoria 我认为您还需要在数组中传递参数。然后您可以获取参数数组中的每个元素并从原始数组中删除
  • @AnoopLL with 'var args = Array.prototype.slice.call(arguments)' 我不是已经把它变成一个数组了吗?并且使用 filter 方法我没有过滤掉任何不符合 indexOf 条件的元素吗?

标签: javascript arrays arguments


【解决方案1】:

您的解决方案几乎可以正常工作。 问题:

  • args.slice(0,1); 不会修改数组(无论如何此方法只返回一个包含第一个元素的数组)。改用args.shift() 删除第一个元素
  • function(elements) 应该是过滤器回调中的function(element)

一个可行的解决方案:

function destroyer(arr) {     
  var args = Array.prototype.slice.call(arguments);
  args.shift();
  return arr.filter(function(element) {
    return args.indexOf(element) === -1;
  });
}

console.log(destroyer([1, 2, 3, 5, 5], 1, 5)); // prints [2, 3]

检查工作的demo

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2021-08-06
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多