jQuery数组操作

给数组添加元素

var arr = ['a','b','c','d']
//添加
arr.push('q')

移除数组的第一个元素

var arr = ['a','b','c','d']
array2=arr.shift() // 'a'
console.log(arr) ['b','c','d']

移除数组最后一个元素

var arr = ['a','b','c','d']
array2=arr.pop() // 'd'
console.log(arr) ['a','b','c']

删除数组中的某个元素 splice

let arr = ['a','b','c','d']
arr.splice('b',1);  //不对,不可以用内容来指定
arr.splice(1,1);  //这个输出的是["b"]
console.log(arr)//这个输出来是["a","c","d"]
arr.slice(1,3)//['b','c']slice是返回指定位置的元素,注意区分,这个不会改变原数组

数组遍历

let arr = ['a','b','c','d']
//$.each()遍历
$.each(arr, function(key, value){
    console.log(key+'...'+value)
})
//for遍历
for(let i = 0; i < arr.length; i++){
    console.log(arr[i])
}

数组筛选,注意参数的数组和$.each()正好相反

//找个简单的例子:
$.grep( [0,1,2], function(n,i){
    return n > 0;
});//返回的结果是[1,2]
接下来比较数组筛选的几种不同方法
var nums = '1,2,3,4,5,jQuery,CSS,5'.split(',');
//$.grep()
nums = $.grep(nums, function (value, key) { 
    // value = 数组元素的当前值 
    // key = 当前值的下标 
    return isNaN(value);
});
console.log(nums); //结果为: ["jQuery", "CSS"] 
//$.map()
nums = $.map(nums, function (value, index) { 
    //和$.grep() 的区别 
    //return isNaN,得到结果为:[true, true] 
    return isNaN(value) ? value : null;
});
console.log(nums); // ["jQuery", "CSS"] 

数组合并

var arr = ['a','b','c','d']
var arr2 = ['d','e','f','g']
let mergeArr = $.merge(arr,arr2 ) //['a','b','c','d','d','e','f','g']

连接

var a=[1,2,3];
var b=['a','b','c'];
var c=["x","y","z"];
var js=a.concat(b,c);
console.log(js)//Array [ 1, 2, 3, "a", "b", "c", "x", "y", "z" ]
console.log(js.join("|"))// 1|2|3|a|b|c|x|y|z

数组去重

//直接对数组去重    
let yearArr = [2009,2009,2010,2010,2009,2010]
$.unique(yearArr) // [2009,2010,2009,1010]

//数组排序后去重
let yearArr = [2009,2009,2010,2010,2009,2010]
yearArr.sort()
$.unique(yearArr) //[2009,2010]

let yearArr = [2009,2009,2010,2010,2009,2010];
Array.from(new Set(yearArr)) //[2009,2010]

yearArr = [2009,2009,2010,2010,2009,2010];
console.log(unique2(yearArr))
function unique2(arr) {
    var ret = [];
    arr.forEach(function(item){
        if(!ret.includes(item)){
            ret.push(item);
        }
    });
    return ret;
}

查找数组中元素的位置,从0开始

var arr = [ 4, "Pete", 8, "John" ];
$.inArray("John", arr);  //3
$.inArray(4, arr);  //0
$.inArray("David", arr);  //-1

把数组拼接成字符串

var a=new Array();
a[0]="XHTML";
a[1]="CSS";
a[2]="JavaScript";
console.log(a.join());//XHTML,CSS,JavaScript 

join()

join("#")可以加符号

将字符串分割成数组,与上面正好相反

let str = 'html,css,js,jquery'
let arr = str.split(',')
console.log(arr)//['html','css','js','jquery']

颠倒数组中的元素

var a=["xhtml","css","javascript"];
var b=a.reverse();
console.log(a);//Array [ "javascript", "css", "xhtml" ]
console.log(b);//Array [ "javascript", "css", "xhtml" ]  

返回指定位置的数组 slice

let arr = ['a','b','c','d']
let b = arr.slice(1,3)
console.log(arr)//Array [ "a" ,"b","c","d"]
console.log(b)//Array [ "b", "c" ]从下标为1开始,到3结束,不包括3的位置 

对象数组的操作

var obj = [ 
   {'id':'1','name':'name1','age':'21'}, 
   {'id':'2','name':'name2','age':'22'}, 
   {'id':'3','name':'name3','age':'23'}, 
   {'id':'4','name':'name4','age':'24'}
]

对象数组合并

var settings = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
$.extend(settings, options); 
//输出settings == { validate: true, limit: 5, name: "bar" } 

找到对象数组中的对应元素,然后删除

var list = [ 
   {'id':'1','name':'name1','age':'21'}, 
   {'id':'2','name':'name2','age':'22'}, 
   {'id':'3','name':'name3','age':'23'}, 
   {'id':'4','name':'name4','age':'24'}
]
function opt(){  
   console.log(list);  
   $.each(list, function (key,val) {   
       if(val.id == '3'){      
           console.log("finded...")      
           list[key] = ''    
       }  
   })  
   list.splice($.inArray('',list),1);  
   console.log(list)  
}
// opt()这个方法是先遍历,找到需要删除的那条记录,然后将它变成'',再通过splice来删除
后来发现splice并不需要这么麻烦,可以直接用索引来删除
function opt2(){  
   console.log(list);  
   for(var i = 0 ;i < list.length; i++){    
       console.log(i)    
       if(list[i].id == '2'){      
           list.splice(i,1);
       }  
   }  
   console.log(list)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • 数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 JavaScript...
    劼哥stone阅读 1,124评论 6 20
  • js基础篇(三)——DOM的各种操作js基础篇(二)——字符串的各种操作 1. 创建数组 创建一个数组,有三种方法...
    hanyuntao阅读 1,609评论 0 14
  • “咚”的一声,一辆转弯的出租车撞上了一辆电动车。 司机见撞到了人,连忙下车查看情况,一个女人正倒在车旁,双手抱膝,...
    过儿a阅读 461评论 1 5
  • 当爱成为了回忆 我,把自己想象 成了一只老狗 一只失去主人 忠诚的老狗 我守着名子 蜷缩着身子趴在那里 两眼流淌着...
    简书孙利阅读 190评论 0 4