删除数组指定元素的原理很简单,无非就是遍历数组查找到给定的元素是否在,找到如果在找就删除,下面我们通过一个应用实例来说明。
arraywithout = function(){
if (arguments.length < 2) {
// arguments 是特殊的对象,代表函数的参数.
return arguments.length == 1 ? arguments[0] : null;
}
var results = [];
var aa = arguments[0];
//将第一参数赋给数组aa;
if (aa === null || aa.constructor != array) {
return null;
//如果aa不存在或者不是数组,那么返回null;
}
if(arguments[1].constructor == array){
// 如果第二个参数是数组,则将参数数组中对应的每个元素都删除;
var args = [];
args[0] = aa;
//aa = arguments[0] 将aa赋给数组args,作为其第一个元素值;
foreach(arguments[1], function(v, i){
//引用了函数foreach,来对数组arguments[1]中每个元素进行操作,
args[i+1] = v;
// v代表数组arguments[1]中每个元素值,将它们一一赋值给args[1],args[2]...,而args[0]=arguments[0];
});
}
else{
args = arguments;
//如果第二个参数不是数组,则直接将参数数组赋给args;
}
for(var i = 0;i < aa.length; i ++){
var iswithout = true;
for(var j = 1; j < args.length ; j ++){
if(aa[i] == args[j]){
iswithout = false;
break;
// 切记j是从1开始的,因为args的第一元素args[0]是arguments[0],正是我们要处理的的原数组,等同于数组aa;
让要删除的各个元素与原数组aa中的某一元素进行逐次比较,如果相同,break 跳出循环; iswithout返回false,所以也不再执行下面的 results.push(aa[i]);
}
}
if (iswithout) {
results.push(aa[i]);
//所谓删除原理,就是将原数组各元素与要删除的元素进行比较,保留与要删除的元素不相同的元素并赋给一个新的数组results;
}
}
return results;
//返回已经删除了指定元素的数组;
};
// 引用arraywithout的例子
var testarray = [1,2,3,4,5,1,2,'w'];
var result = arraywithout(testarray, 1, 3);
//var result = arraywithout(testarray, [1, 4]);
alert(result) //[2,4,5,2]
总结,这里用到push,如果遍历数据然后进行比较再删除这样就实现的删除指定数组元素了。