javascript中刪除指定數(shù)組中指定的元素的代碼
更新時(shí)間:2011年02月12日 20:54:06 作者:
已知一個(gè)數(shù)組,我們想用指定的方法對(duì)數(shù)組中的元素進(jìn)行逐一操作。需要的朋友可以參考下。
函數(shù)如下:
foreach = function (obj, insp){
if(obj== null && obj.constructor != Array){
return [];
}
//obj是要處理的數(shù)組,obj==null 表示對(duì)象尚未存在;obj.constructor != Array 表示對(duì)象obj的屬性的構(gòu)造函數(shù)不是數(shù)組;
//constructor屬性始終指向創(chuàng)建當(dāng)前對(duì)象的構(gòu)造函數(shù)。兩個(gè)條件均滿足,則返回空數(shù)組[];
//下面對(duì)constructor屬性作進(jìn)一步了解。
var obj= [1, 2, 3, 4]; // 等價(jià)于 var obj= new Array(1, 2, 3, 4);
console.log(obj.constructor === Array); // 返回true 表明obj的構(gòu)造函數(shù)為Array;
var foo= function() { }; // 等價(jià)于 var foo = new Function();
console.log(foo.constructor === Function); // 返回true 表明foo的構(gòu)造函數(shù)為Function;
var obj = new Foo(); //由構(gòu)造函數(shù)實(shí)例化一個(gè)obj對(duì)象
console.log(obj.constructor === Foo); // 返回true 表明obj的構(gòu)造函數(shù)為Foo;
-----------------------------------------------------------------------------------------------------------
var i=0, len = obj.length, r = [];
while(i<len){
var x = insp(obj[i], i);
if (x !== null) {
r[r.length] = x;
}
i++;
}
return r;
};
//對(duì)數(shù)組對(duì)象obj進(jìn)行遍歷,參數(shù)insp代表一個(gè)方法或函數(shù),用于對(duì)obj中的每個(gè)元素進(jìn)行操作。給參數(shù)insp傳遞了兩個(gè)參數(shù),obj[i]代表數(shù)組中的每一個(gè)元素值;并將函數(shù)參數(shù)insp賦給x,最終將x值賦給數(shù)組r。
-----------------------------------------------------------------------------------------------------------
比如我們要遍歷數(shù)組中的每一個(gè)元素,引用foreach函數(shù)
var testArray = [1,2,3,4,5,1,2,'w'];
foreach(testArray, function(i){
alert(i)
});
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
我們用另一個(gè)函數(shù)來(lái)刪除指定數(shù)組中指定的元素;
ArrayWithout = function(){
if (arguments.length < 2) {
// Arguments 是特殊的對(duì)象,代表函數(shù)的參數(shù).
return arguments.length == 1 ? arguments[0] : null;
}
var results = [];
var aa = arguments[0];
//將第一參數(shù)賦給數(shù)組aa;
if (aa === null || aa.constructor != Array) {
return null;
//如果aa不存在或者不是數(shù)組,那么返回null;
}
if(arguments[1].constructor == Array){
// 如果第二個(gè)參數(shù)是數(shù)組,則將參數(shù)數(shù)組中對(duì)應(yīng)的每個(gè)元素都刪除;
var args = [];
args[0] = aa;
//aa = arguments[0] 將aa賦給數(shù)組args,作為其第一個(gè)元素值;
foreach(arguments[1], function(v, i){
//引用了函數(shù)foreach,來(lái)對(duì)數(shù)組arguments[1]中每個(gè)元素進(jìn)行操作,
args[i+1] = v;
// v代表數(shù)組arguments[1]中每個(gè)元素值,將它們一一賦值給args[1],args[2]...,而args[0]=arguments[0];
});
}
else{
args = arguments;
//如果第二個(gè)參數(shù)不是數(shù)組,則直接將參數(shù)數(shù)組賦給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開始的,因?yàn)閍rgs的第一元素args[0]是arguments[0],正是我們要處理的的原數(shù)組,等同于數(shù)組aa;
讓要?jiǎng)h除的各個(gè)元素與原數(shù)組aa中的某一元素進(jìn)行逐次比較,如果相同,break 跳出循環(huán); isWithout返回false,所以也不再執(zhí)行下面的 results.push(aa[i]);
}
}
if (isWithout) {
results.push(aa[i]);
//所謂刪除原理,就是將原數(shù)組各元素與要?jiǎng)h除的元素進(jìn)行比較,保留與要?jiǎng)h除的元素不相同的元素并賦給一個(gè)新的數(shù)組results;
}
}
return results;
//返回已經(jīng)刪除了指定元素的數(shù)組;
};
// 引用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]
源代碼如下:
foreach = function (obj, insp){
if(obj == null && obj.constructor != Array){
return [];
}
var i=0, len = obj.length, r = [];
while(i<len){
var x = insp(obj[i], i);
if (x !== null) {
r[r.length] = x;
}
i++;
}
return r;
};
ArrayWithout = function(){
if (arguments.length < 2) {
return arguments.length == 1 ? arguments[0] : null;
}
var results = [];
var aa = arguments[0];
if (aa === null || aa.constructor != Array) {
return null;
}
if(arguments[1].constructor == Array){
var args = [];
args[0] = aa;
foreach(arguments[1], function(v, i){
args[i+1] = v;
});
}
else{
args = arguments;
}
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;
}
}
if (isWithout) {
results.push(aa[i]);
}
}
return results;
};
var testArray = [1,2,3,4,5,1,2];
foreach(testArray, function(i){
alert(i)
})
var result = ArrayWithout(testArray, 1, 3);
//var result = ArrayWithout(testArray, [1, 3]);
alert(result) //[2,4,5,2]
復(fù)制代碼 代碼如下:
foreach = function (obj, insp){
if(obj== null && obj.constructor != Array){
return [];
}
//obj是要處理的數(shù)組,obj==null 表示對(duì)象尚未存在;obj.constructor != Array 表示對(duì)象obj的屬性的構(gòu)造函數(shù)不是數(shù)組;
//constructor屬性始終指向創(chuàng)建當(dāng)前對(duì)象的構(gòu)造函數(shù)。兩個(gè)條件均滿足,則返回空數(shù)組[];
//下面對(duì)constructor屬性作進(jìn)一步了解。
var obj= [1, 2, 3, 4]; // 等價(jià)于 var obj= new Array(1, 2, 3, 4);
console.log(obj.constructor === Array); // 返回true 表明obj的構(gòu)造函數(shù)為Array;
var foo= function() { }; // 等價(jià)于 var foo = new Function();
console.log(foo.constructor === Function); // 返回true 表明foo的構(gòu)造函數(shù)為Function;
var obj = new Foo(); //由構(gòu)造函數(shù)實(shí)例化一個(gè)obj對(duì)象
console.log(obj.constructor === Foo); // 返回true 表明obj的構(gòu)造函數(shù)為Foo;
-----------------------------------------------------------------------------------------------------------
var i=0, len = obj.length, r = [];
while(i<len){
var x = insp(obj[i], i);
if (x !== null) {
r[r.length] = x;
}
i++;
}
return r;
};
//對(duì)數(shù)組對(duì)象obj進(jìn)行遍歷,參數(shù)insp代表一個(gè)方法或函數(shù),用于對(duì)obj中的每個(gè)元素進(jìn)行操作。給參數(shù)insp傳遞了兩個(gè)參數(shù),obj[i]代表數(shù)組中的每一個(gè)元素值;并將函數(shù)參數(shù)insp賦給x,最終將x值賦給數(shù)組r。
-----------------------------------------------------------------------------------------------------------
比如我們要遍歷數(shù)組中的每一個(gè)元素,引用foreach函數(shù)
var testArray = [1,2,3,4,5,1,2,'w'];
foreach(testArray, function(i){
alert(i)
});
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
我們用另一個(gè)函數(shù)來(lái)刪除指定數(shù)組中指定的元素;
復(fù)制代碼 代碼如下:
ArrayWithout = function(){
if (arguments.length < 2) {
// Arguments 是特殊的對(duì)象,代表函數(shù)的參數(shù).
return arguments.length == 1 ? arguments[0] : null;
}
var results = [];
var aa = arguments[0];
//將第一參數(shù)賦給數(shù)組aa;
if (aa === null || aa.constructor != Array) {
return null;
//如果aa不存在或者不是數(shù)組,那么返回null;
}
if(arguments[1].constructor == Array){
// 如果第二個(gè)參數(shù)是數(shù)組,則將參數(shù)數(shù)組中對(duì)應(yīng)的每個(gè)元素都刪除;
var args = [];
args[0] = aa;
//aa = arguments[0] 將aa賦給數(shù)組args,作為其第一個(gè)元素值;
foreach(arguments[1], function(v, i){
//引用了函數(shù)foreach,來(lái)對(duì)數(shù)組arguments[1]中每個(gè)元素進(jìn)行操作,
args[i+1] = v;
// v代表數(shù)組arguments[1]中每個(gè)元素值,將它們一一賦值給args[1],args[2]...,而args[0]=arguments[0];
});
}
else{
args = arguments;
//如果第二個(gè)參數(shù)不是數(shù)組,則直接將參數(shù)數(shù)組賦給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開始的,因?yàn)閍rgs的第一元素args[0]是arguments[0],正是我們要處理的的原數(shù)組,等同于數(shù)組aa;
讓要?jiǎng)h除的各個(gè)元素與原數(shù)組aa中的某一元素進(jìn)行逐次比較,如果相同,break 跳出循環(huán); isWithout返回false,所以也不再執(zhí)行下面的 results.push(aa[i]);
}
}
if (isWithout) {
results.push(aa[i]);
//所謂刪除原理,就是將原數(shù)組各元素與要?jiǎng)h除的元素進(jìn)行比較,保留與要?jiǎng)h除的元素不相同的元素并賦給一個(gè)新的數(shù)組results;
}
}
return results;
//返回已經(jīng)刪除了指定元素的數(shù)組;
};
// 引用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]
源代碼如下:
復(fù)制代碼 代碼如下:
foreach = function (obj, insp){
if(obj == null && obj.constructor != Array){
return [];
}
var i=0, len = obj.length, r = [];
while(i<len){
var x = insp(obj[i], i);
if (x !== null) {
r[r.length] = x;
}
i++;
}
return r;
};
ArrayWithout = function(){
if (arguments.length < 2) {
return arguments.length == 1 ? arguments[0] : null;
}
var results = [];
var aa = arguments[0];
if (aa === null || aa.constructor != Array) {
return null;
}
if(arguments[1].constructor == Array){
var args = [];
args[0] = aa;
foreach(arguments[1], function(v, i){
args[i+1] = v;
});
}
else{
args = arguments;
}
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;
}
}
if (isWithout) {
results.push(aa[i]);
}
}
return results;
};
var testArray = [1,2,3,4,5,1,2];
foreach(testArray, function(i){
alert(i)
})
var result = ArrayWithout(testArray, 1, 3);
//var result = ArrayWithout(testArray, [1, 3]);
alert(result) //[2,4,5,2]
您可能感興趣的文章:
- JavaScript中詭異的delete操作符
- js delete 用法(刪除對(duì)象屬性及變量)
- Javascript中的delete介紹
- javascript delete 使用示例代碼
- JavaScript delete 屬性的使用
- JavaScript從數(shù)組中刪除指定值元素的方法
- Javascript根據(jù)指定下標(biāo)或?qū)ο髣h除數(shù)組元素
- js 刪除數(shù)組的幾種方法小結(jié)
- js刪除數(shù)組元素、清空數(shù)組的簡(jiǎn)單方法(必看)
- js刪除Array數(shù)組中指定元素的兩種方法
- 基于JavaScript實(shí)現(xiàn)移除(刪除)數(shù)組中指定元素
- Javascript remove 自定義數(shù)組刪除方法
- JavaScript使用delete刪除數(shù)組元素用法示例【數(shù)組長(zhǎng)度不變】
相關(guān)文章
JavaScript實(shí)現(xiàn)移動(dòng)小精靈的案例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)移動(dòng)小精靈的案例代碼,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12正則表達(dá)式基本語(yǔ)法及表單驗(yàn)證操作詳解【基于JS】
這篇文章主要介紹了正則表達(dá)式基本語(yǔ)法及表單驗(yàn)證操作,較為詳細(xì)的分析了正則表達(dá)式的基本語(yǔ)法以及基于JS實(shí)現(xiàn)的表單正則驗(yàn)證操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04深入淺出webpack教程系列_安裝與基本打包用法和命令參數(shù)詳解
下面小編就為大家?guī)?lái)一篇深入淺出webpack教程系列_安裝與基本打包用法和命令參數(shù)詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就想給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-09-09form.submit()不能提交表單的錯(cuò)誤原因及解決方法
button的id不要設(shè)置為submit,否則可能會(huì)引起混淆,導(dǎo)致表單的submit()方法不能提交表單2014-10-10JS作用域閉包、預(yù)解釋和this關(guān)鍵字綜合實(shí)例解析
這篇文章主要介紹了JS作用域閉包、預(yù)解釋和this關(guān)鍵字,結(jié)合實(shí)例形式分析了javascript作用域閉包、預(yù)解釋和this關(guān)鍵字在具體使用過程中的操作技巧與注意事項(xiàng),需要的朋友可以參考下2016-12-12js實(shí)現(xiàn)首屏延遲加載實(shí)現(xiàn)方法 js實(shí)現(xiàn)多屏單張圖片延遲加載效果
這篇文章主要介紹了js實(shí)現(xiàn)首屏延遲加載實(shí)現(xiàn)方法,以及js實(shí)現(xiàn)多屏單張圖片延遲加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07淺談javascript語(yǔ)法和定時(shí)函數(shù)
初學(xué)者可能對(duì)Javascript的定時(shí)器有誤解,認(rèn)為它們是線程,其實(shí)Javascript是運(yùn)行于單線程中的,而定時(shí)器僅僅是計(jì)劃在未來(lái)的某個(gè)時(shí)間執(zhí)行,而具體的執(zhí)行時(shí)間是不能保證的,因?yàn)樵陧?yè)面的生命周期中,不同的時(shí)間可能有其它代碼在控制Javascript的里進(jìn)程。2015-05-05