实现一个摧毁(destroyer)函数

169 阅读1分钟

实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

    1. destroyer([1, 2, 3, 1, 2, 3], 2, 3) 应该返回 [1, 1].
    1. destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3) 应该返回 [1, 5, 1].
function destroyer(arr) {
  var newArr = [];
  for(var i = 0; i < arguments.length; i++){
    newArr.push(arguments[i]);//获取所有参数
  }
  var resultArr = arr.filter(function (item){
    return newArr.indexOf(item) < 0;/*判断参数是否包含数组arr里的元素
                                    例:destroyer(["tree", "hamburger", 53], "tree", 53)
                                        arr:["tree", "hamburger", 53]
                                        newArr:[Array(3), "tree", 53]*/
  });
  return resultArr;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

arguments.length为函数实参个数,arguments.callee引用函数自身

arguments他的特性和使用方法

特性:

arguments对象和Function是分不开的。因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。

使用方法:

虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同

例如:

arguments[0],arguments[1],。。。。。。。。arguments[n]

在js中 不需要明确指出参数名,就能访问它们,例如:

function test() {
    var s = "";
    for (var i = 0; i < arguments.length; i++) {
        alert(arguments[i]);
        s += arguments[i] + ",";
    }
    return s;
}
test("name", "age")
//输出结果
name,age