实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
-
- destroyer([1, 2, 3, 1, 2, 3], 2, 3) 应该返回 [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