数组和对象的API

本文详细介绍了JavaScript中数组和对象的各种原生方法,包括数组的排序、遍历、筛选等实用技巧,以及对象属性的判断与遍历方法。同时提供了实际应用案例,帮助读者深入理解这些方法的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS数组的原生方法:

arr.concat(arr1,arr2,arrn)

arr.join(,)

arr.sort(func)  //排序,默认是按照字典序排序

arr.pop();

arr.push(e1,e2,en)

arr.shift()          //删除数组的第一个元素,并返回该元素

arr.unshift(e1,e2,en)  //在数组的第一个位置添加元素,并返回添加新元素后的数组长度

arr.reverse()

arr.slice(start,end)  //提取原数组的一部分a.slice()相当于复制数组

arr.splice(index,count,e1,e2,en)

Arr.indexOf(el)  //返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1

Arr.lastIndexOf(el)  //返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1

Arr.includes(el)  //ES6   

Arr.map(fn) //对数组所有成员一次调用一个函数,根据函数结果返回新数组

Arr.forEach() //遍历数组,执行某种操作,一般无返回值

Arr.filter(fn)  //将返回结果为true的成员组成一个新数组返回。该方法不会改变原数组

Arr.some(fn) //只要一个成员返回true,整个方法返回true

Arr.every(fn) //所有成员的返回值都是true,才返回true,否则返回false

Arr.reduce() //从左到右处理

Arr.reduceRight()  //从右到左

改变原数组的:

Shift:将第一个元素删除并返回删除元素,空即为undefined

Unshift:向数组开头添加元素,并返回新的长度

Pop:删除最后一个并返回删除的元素

Push:向数组末尾添加元素,并返回新的长度

Reverse:颠倒数组顺序

Sort:对数组排序

Splice:splice(start,length,item)删除,增加,替换数组元素,返回被删除数组,无删除则不返回

不改变原数组的:

Concat:连接多个数组,返回新的数组

Join:将数组中所有元素以参数作为分隔符放入一个字符

Slice:slice(start,end),返回选定元素

Map,filter,forEach,some,every等不改变原数组

  1. forEach遍历所有元素
  2. every判断所有元素是否都符合条件(返回true或false)
  3. some判断是否有至少一个元素符合条件
  4. sort排序
  5. map对元素重新组装,生成新数组
  6. filter过滤符合条件的元素

注:forEach与map用法相似都是遍历数组的每一项值;

区别:map的回调函数中支持return的返回值

1、forEach:

    var arr = [1,3,5,2,3];

    arr.forEach(function (item,index) {

        console.log("索引:"+index,"元素:"+item);

})

输出:  索引:0 元素:1

            索引:1 元素:3

            索引:2 元素:5

            索引:3 元素:2

            索引:4 元素:3

2、every:碰到一个返回不符合条件的,就返回false

var arr = [1,3,5,2,3,4];

var result = arr.every(function (item,index) {

        if(item<4){

            return true;

        }

    })

    console.log(result);

输出:false

3、some:碰到一个true的值就直接返回。

var arr = [1,3,5,2,3,4];

var result = arr.some(function (item,index) {

        if(item<2){

            return true;

        }

    })

    console.log(result);

输出:true

4、sort:

var arr = [1,3,5,2,3,4];

var arr1 = arr.sort(function (a,b) {

       return a-b;  //从小到大排序

       //return b-a;  //从大到小排序

   })

console.log(arr1);

输出:[1, 2, 3, 3, 4, 5]

5、map:将元素重新组装并返回

var arr = [1,3,5,2,3,4];

var arr2 = arr.map(function (item,index) {

       return item*item;

   })

    console.log(arr2);

输出:[1, 9, 25, 4, 9, 16]

6、filter:通过某一条件过滤数组

var arr = [1,3,5,2,3,4];

var arr3 = arr.filter(function (item,index) {

       if(item>2){

           return true;

       }

   })

    console.log(arr3);

输出:[3, 5, 3, 4]

对象的原生方法:

object.hasOwnProperty(prop) //判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性

object.propertyIsEnumerable(prop)  //判断某个属性是否可枚举

Object.valueOf()        //返回当前对象对应的值

Object.toString()       //返回当前对象对应的字符串形式,用来判断一个值的类型

Object.toLocaleString()  //返回当前对象对应的本地字符串形式

Class.prototype.isPropertyOf(object) //判断当前对象是否为另一个对象的原型

如:

var obj = {

        x:100,

        y:200,

        z:300

    }

    var key;

    for(key in obj){

        if(obj.hasOwnProperty(key)){//hasOwnProperty是判断对象实例的是否具有某个属性

            console.log(key,obj[key]);

        }

}

输出:x 100

           y 200

           z 300

解题:

1、获取2018-03-21格式的日期

 function formateDate(dt) {

        if(!dt){

            dt = new Date();

        }

        var year = dt.getFullYear();

        var month = dt.getMonth()+1;

        var date = dt.getDate();

        if(month<10){

            month = "0" + month;    //强制类型转换

        }

        if(date<10){

            date = "0" + date;     //强制类型转换

        }

        return year + "-" + month + "-" + date;

    }

    var dt = new Date();

    var date = formateDate(dt);

    console.log(date);

2、获取随机数,要求是长度一致的字符串格式

    var random = Math.random();

    var random = random + '0000000000'; //末尾加0补位

    var random = random.slice(0,10);    //截取前10位

    console.log(random);

3、写一个能遍历对象和数组的forEach函数

 function forEach(obj,fn) {

        var key;

        if(obj instanceof Array){      //判断是数组

            obj.forEach(function (item,index) {

                fn(index,item);

            })

        }else{      //对象

            for(key in obj){

                fn(key,obj[key]);

            }

        }

    }

    //数组

    var arrs = [1,2,3];

    forEach(arrs,function (index,item) {

        console.log(index,item);

    })

    //对象

    var obj = {x:100,y:200};

    forEach(obj,function (key,value) {

        console.log(key,value);

    })

输出:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值