js 数组的方法和操作

目录

数组的方法

数组去重

数组方法扩展 indexof() forEach() map() filter()


数组的方法

    concat() 连接两个或更多的数组,并返回结果。

    join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

    pop() 删除并返回数组的最后一个元素

    push() 向数组的末尾添加一个或更多元素,并返回新的长度。

    shift() 删除并返回数组的第一个元素

    unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

    reverse() 颠倒数组中元素的顺序。

    slice() 从某个已有的数组返回选定的元素

    sort() 对数组的元素进行排序

    splice() 删除元素,并向数组添加新元素。

    toSource() 返回该对象的源代码。

    toString() 把数组转换为字符串,并返回结果。

    toLocaleString() 把数组转换为本地数组,并返回结果。

    valueOf() 返回数组对象的原始值

 

       slice()

         可以用来从数组提取指定元素

         该方法不会改变元素数组,而是将截取到的元素封装到一个新数组中返回

       参数:

          1.截取开始的位置的索引,包含开始索引

          2.截取结束的位置的索引,不包含结束索引

            第二个参数可以省略不写,此时会截取从开始索引往后的所有元素

            索引可以传递一个负值,如果传递一个负值,则从后往前计算

             -1 倒数第一个

             -2 倒数第二个

 

       splice()

         - 可以用于删除数组中的指定元素

         - 使用splice()会影响到原数组,会将指定元素从原数组中删除

           并将被删除的元素作为返回值返回

         - 参数:

           第一个,表示开始位置的索引

           第二个,表示删除的数量

           第三个及以后。。

             可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边

     sort()

即使对于纯数字的数组,使用sort()排序时,也会按照Unicode编码来排序,

所以对数字进排序时,可能会得到错误的结果。

           我们可以自己来指定排序的规则

           我们可以在sort()添加一个回调函数,来指定排序规则,

           回调函数中需要定义两个形参,

           浏览器将会分别使用数组中的元素作为实参去调用回调函数

           使用哪个元素调用不确定,但是肯定的是在数组中a一定在b前边

            - 浏览器会根据回调函数的返回值来决定元素的顺序,

             如果返回一个大于0的值,则元素会交换位置

             如果返回一个小于0的值,则元素位置不变

             如果返回一个0,则认为两个元素相等,也不交换位置

           - 如果需要升序排列,则返回 a-b

              如果需要降序排列,则返回b-a

        arr = [5, 4, 2, 1, 3, 6, 8, 7];

        arr.sort(function(a, b) {

            //升序排列
            //return a - b;

            //降序排列
            return b - a;

        });

 

    forEach()方法需要一个函数作为参数

           像这种函数,由我们创建但是不由我们调用的,我们称为回调函数

           数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素

           以实参的形式传递进来,我们可以来定义形参,来读取这些内容

           浏览器会在回调函数中传递三个参数:

               第一个参数,就是当前正在遍历的元素

               第二个参数,就是当前正在遍历的元素的索引

               第三个参数,就是正在遍历的数组

 

      arr.forEach(function(value , index , obj){

        console.log(value);

      });

 

数组去重

//创建一个数组
var arr = [1,2,3,2,2,1,3,4,2,5];

//去除数组中重复的数字
//获取数组中的每一个元素
for(var i=0 ; i<arr.length ; i++){
	//console.log(arr[i]);
	/*获取当前元素后的所有元素*/
	for(var j=i+1 ; j<arr.length ; j++){
		//console.log("---->"+arr[j]);
		//判断两个元素的值是否相等
		if(arr[i] == arr[j]){
			//如果相等则证明出现了重复的元素,则删除j对应的元素
			arr.splice(j,1);
			//当删除了当前j所在的元素以后,后边的元素会自动补位
			//此时将不会在比较这个元素吧,我需要在比较一次j所在位置的元素
			//使j自减
			j--;
		}
	}
}

console.log(arr);

[1, 2, 3, 4, 5]

 

数组方法扩展 indexof() forEach() map() filter()

var arr = [1, 4, 67, 2, 2, 4, 42, 47, 4];
console.log(arr.indexOf(4)) // 得到值在数组中的第一个下标 1
console.log(arr.lastIndexOf(4)) // 得到值在数组中的最后一个下标 4
arr.forEach(function(item, index) {
    // console.log(item, index)
})
console.log(arr)

// 遍历数组返回一个新的数组,返回加工之后的值
var arr1 = arr.map(function(item, index) {
    return item + 10
})
console.log(arr1) // [11, 14, 77, 12, 12, 14, 52, 57, 14]

// 遍历过滤出一个新的子数组, 返回条件为true的值
var arr2 = arr.filter(function(item, index) {
    return item > 3
})
console.log(arr2) // [4, 67, 4, 42, 47, 4]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值