JavaScript基础学习——数组

来源:互联网 发布:古筝调音器安卓软件 编辑:程序博客网 时间:2024/06/03 22:50

数组常见操作

//初始数组var targetarr=[{name:'张四',age:24},{name:'张三',age:23},{name:'张五',age:25}];showarray(targetarr);/** * 显示数组内容函数,foreach函数遍历数组 * @param arr 数组 */var showarray = function(arr){    var showstr='';    arr.forEach(function(item){        showstr+=(item.name+','+item.age).toString()+';';    });  $("#show").html(showstr);};/** * sort:利用字符串大小排序,默认升序 * 改进sort函数,根据项的对象属性进行数组排序,默认降序 * @param arr 数组 * @param key 对象属性值 * @param sequence 排序方式 * @returns {*} */var sortarray=function(arr,key,sequence){    return arr.sort(function compare(num1,num2){        if(sequence=="asc"){            return num1[key]-num2[key];        }else{            return num2[key]-num1[key];        }    });}/** * 5种迭代方法,都是三个参数,item,index,array * 方法1:every ,遍历每一项,执行函数,每一项都返回true,则返回值返回true * 方法2:some ,遍历每一项,执行函数,存在任何一项返回true,则返回值返回true * 方法3:filter,遍历每一项,执行函数,返回满足函数返回值为true的所有项组成的数组 * 方法4:map,遍历每一项,执行函数,返回函数的结果给每一项,然后组成数组 * 方法5:foreach,无返回值,遍历数组的常用方法 *///迭代方法举例,显示出age大于24的对象组成的数组showarray (targetarr.filter(function (item,index,array){    return item.age>24;}));/** * 2种归并方法,4个参数,pre,cur,index,array * 方法1:reduce ,操作第一项和第二项,然后将结果和第三项进行操作,依次类推,从左往右 * 方法2:reduceRight ,顺序从右往左,其他和reduce一样 *///归并方法举例,数组中所有对象的age的和 ps:这边花了点小插曲,忘记了返回值必须是对象var sum=targetarr.reduce(function (pre,cur,index,array){    var preobj=new Object();    preobj.age=pre.age+cur.age;    return preobj;});alert(sum.age);//利用length末尾动态添加项targetarr[targetarr.length]={name:'张六',age:26};showarray(targetarr);//调用数组排序函数var sortarray =sortarray(targetarr,'age');showarray(sortarray);//reverse:反转数组顺序showarray(targetarr.reverse());//slice: 裁剪数组,返回第startindex+1项到endindex项的数组var startindex=0,endindex=2;showarray(targetarr.slice(startindex,endindex));//indexOf和lastIndexOf: 匹配数组的项,若匹配则返回项的index,否则返回-1;indexOf从前往后遍历,lastIndexOf从末向前遍历//@param matchindexcontent 匹配项内容// @param startinex 起始项(可选) var targetarr=[{name:'张四',age:24},{name:'张三',age:23},{name:'张五',age:25}];var matchindex=targetarr[1];alert(targetarr.indexOf(matchindex));//ps:如果直接新建一个对象的话,比如 {name:'张三',age:23},那么返回值是-1,因为对象的内存地址不同 ,这里返回的是1/** * @param startindex 数组起始项 * @param deleteindexnum 要删除的数组项数量 * @param insertindex 要插入的数组项 * splice: 给数组插入项,具体可以实现两个功能 * 功能一:删除包括第startindex+1项在内的之后deleteindexnum项,,2个参数startindex和deleteindexnum,返回值为删除项 * 功能二:从任意位置删除连续项并插入连续项,三个参数都加上,返回值为空数组;如果不想删除,那就让deleteindexnum=0,返回值为删除项 *///功能一举例,从第2项起连续删除2项var startindex=1,deleteindexnum=2;targetarr.splice(startindex,deleteindexnum);showarray(targetarr);//功能二举例,从第2项起,插入新的一项,并且不删除项var startindex=1,deleteindexnum=0;insertindex={name:'插入项1',age:24};targetarr.splice(startindex,deleteindexnum,insertindex);showarray(targetarr);//利用push末尾动态添加项,返回数组长度var count=targetarr.push({name:'张七',age:27});showarray(targetarr);//利用pop删除末尾项,返回删除的项var item=targetarr.pop();showarray(targetarr);//利用shift移除首项,并返回首项var item=targetarr.shift();showarray(targetarr);
0 0
原创粉丝点击