JavaScript基础学习——数组

数组常见操作

//初始数组
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值