最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript中刪除指定數(shù)組中指定的元素的代碼

 更新時間:2011年02月12日 20:54:06   作者:  
已知一個數(shù)組,我們想用指定的方法對數(shù)組中的元素進行逐一操作。需要的朋友可以參考下。
函數(shù)如下:
復制代碼 代碼如下:

foreach = function (obj, insp){
  if(obj== null && obj.constructor != Array){
  return [];
}
//obj是要處理的數(shù)組,obj==null 表示對象尚未存在;obj.constructor != Array 表示對象obj的屬性的構造函數(shù)不是數(shù)組;
//constructor屬性始終指向創(chuàng)建當前對象的構造函數(shù)。兩個條件均滿足,則返回空數(shù)組[];
//下面對constructor屬性作進一步了解。
var obj= [1, 2, 3, 4]; // 等價于 var obj= new Array(1, 2, 3, 4);
console.log(obj.constructor === Array); // 返回true 表明obj的構造函數(shù)為Array;
var foo= function() { }; // 等價于 var foo = new Function();
console.log(foo.constructor === Function); // 返回true 表明foo的構造函數(shù)為Function;
var obj = new Foo(); //由構造函數(shù)實例化一個obj對象
console.log(obj.constructor === Foo); // 返回true 表明obj的構造函數(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;
};
//對數(shù)組對象obj進行遍歷,參數(shù)insp代表一個方法或函數(shù),用于對obj中的每個元素進行操作。給參數(shù)insp傳遞了兩個參數(shù),obj[i]代表數(shù)組中的每一個元素值;并將函數(shù)參數(shù)insp賦給x,最終將x值賦給數(shù)組r。
-----------------------------------------------------------------------------------------------------------
比如我們要遍歷數(shù)組中的每一個元素,引用foreach函數(shù)
var testArray = [1,2,3,4,5,1,2,'w'];
foreach(testArray, function(i){
  alert(i)
});
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
我們用另一個函數(shù)來刪除指定數(shù)組中指定的元素;
復制代碼 代碼如下:

ArrayWithout = function(){
  if (arguments.length < 2) {
// Arguments 是特殊的對象,代表函數(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){
// 如果第二個參數(shù)是數(shù)組,則將參數(shù)數(shù)組中對應的每個元素都刪除;
    var args = [];
    args[0] = aa;
//aa = arguments[0] 將aa賦給數(shù)組args,作為其第一個元素值;
    foreach(arguments[1], function(v, i){
//引用了函數(shù)foreach,來對數(shù)組arguments[1]中每個元素進行操作,
      args[i+1] = v;
// v代表數(shù)組arguments[1]中每個元素值,將它們一一賦值給args[1],args[2]...,而args[0]=arguments[0];
   });
   }
   else{
    args = arguments;
//如果第二個參數(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開始的,因為args的第一元素args[0]是arguments[0],正是我們要處理的的原數(shù)組,等同于數(shù)組aa;
讓要刪除的各個元素與原數(shù)組aa中的某一元素進行逐次比較,如果相同,break 跳出循環(huán); isWithout返回false,所以也不再執(zhí)行下面的 results.push(aa[i]);
    }
   }
     if (isWithout) {
       results.push(aa[i]);
        //所謂刪除原理,就是將原數(shù)組各元素與要刪除的元素進行比較,保留與要刪除的元素不相同的元素并賦給一個新的數(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]

相關文章

  • layui table 多行刪除(id獲取)的方法

    layui table 多行刪除(id獲取)的方法

    今天小編就為大家分享一篇layui table 多行刪除(id獲取)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 徹底理解JavaScript的原型與原型鏈

    徹底理解JavaScript的原型與原型鏈

    原型和原型鏈是js中的難點也是重點,明白了原型和原型鏈會讓我們在后面不管是學習還是工作都會更加高效,這篇文章主要給大家介紹了關于JavaScript原型與原型鏈的相關資料,需要的朋友可以參考下
    2021-10-10
  • js基于canvas實現(xiàn)時鐘組件

    js基于canvas實現(xiàn)時鐘組件

    這篇文章主要介紹了js基于canvas實現(xiàn)時鐘組件的方法,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2021-02-02
  • 30分鐘快速掌握Bootstrap框架

    30分鐘快速掌握Bootstrap框架

    Bootstrap 是一個用于快速開發(fā) Web 應用程序和網(wǎng)站的前端框架。接下來通過本文給大家介紹如何快速掌握Bootstrap,感興趣的朋友一起學習吧
    2016-05-05
  • JavaScript閉包函數(shù)訪問外部變量的方法

    JavaScript閉包函數(shù)訪問外部變量的方法

    這篇文章主要介紹了JavaScript閉包函數(shù)訪問外部變量的方法,本文使用匿名函數(shù)來實現(xiàn)在閉包中訪問外部變量,需要的朋友可以參考下
    2014-08-08
  • 通過大白話理解微信小程序的授權登錄

    通過大白話理解微信小程序的授權登錄

    很多人會把微信小程序的登錄和授權搞混淆,下面這篇文章主要給大家介紹了如何通過大白話理解微信小程序授權登錄的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 微信小程序里引入SVG矢量圖標的方法

    微信小程序里引入SVG矢量圖標的方法

    這篇文章主要介紹了微信小程序里引入SVG矢量圖標的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • js微信分享接口調(diào)用詳解

    js微信分享接口調(diào)用詳解

    這篇文章主要為大家詳細介紹了js微信分享接口調(diào)用的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • JavaScript中的事件監(jiān)聽詳細介紹

    JavaScript中的事件監(jiān)聽詳細介紹

    這篇文章主要給大家介紹了關于JavaScript中事件監(jiān)聽的相關資料,在前端開發(fā)過程中我們經(jīng)常會遇到給頁面元素添加事件的問題,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • 在localStorage中存儲對象數(shù)組并讀取的方法

    在localStorage中存儲對象數(shù)組并讀取的方法

    頻繁ajax請求導致頁面響應變慢,所以考慮將數(shù)據(jù)存儲在window.storage中,這樣只需請求一次ajax,接下來通過本文給大家介紹了在localStorage中存儲對象數(shù)組并讀取的方法,需要的朋友可以參考下
    2016-09-09

最新評論

武功县| 满城县| 九江市| 弥勒县| 西安市| 拉孜县| 酒泉市| 通化县| 辽宁省| 临沭县| 册亨县| 象州县| 博白县| 固原市| 中江县| 黄冈市| 铜山县| 乌鲁木齐县| 绥阳县| 上高县| 佛山市| 长乐市| 门头沟区| 且末县| 买车| 汽车| 陕西省| 色达县| 新民市| 罗定市| 滨海县| 寻甸| 平利县| 蚌埠市| 赤水市| 邯郸市| 扶沟县| 崇信县| 吉安县| 梓潼县| 和田市|