javaScript数组的方法

作用:单独的变量名,存储任意数据类型的数据。

创建数组

  1. 字面量

var arr = [];

  1. 构造函数创建

var arr = new Array()
var arr = new Array(1,2,3)
var arr = new Array(3)  // [undefined,undefined,undefined]
var arr = new Array(‘3’) // [‘3’]

数组的遍历

数组的栈方法

数组.push(值) 向数组的尾部添加数据  返回值是数组修改后的长度。
数组.unshift(值)向数组的头部添加数据  返回值是数组修改后的长度。
数组.pop();  删除数组的最后一项,一次删除一个,返回被删除的项。
数组.shift()  删除数组的最前面一项,一次删除一个,返回被删除的项。
添加返回的都是长度。
删除返回的都是删除项。
三个参数实现添加、删除、替换。  数组.splice(起始下标,删除个数,要添加的项)

排序

fun(a,b)函数为排序函数  a-b从小到大   b-a从大到小。

数组.sort(fun())

选择排序
var arr = [2, 32, 45, 22, 12];
var k = 0;
for (var i = 0; i < 4; i++) {
    k = i;
    for (var j = i + 1; j < arr.length; j++) {
        if (arr[k] > arr[j]) {
            k = j;
        }
        var temp = arr[k];
        arr[k] = arr[i];
        arr[i] = temp;
    }
}
console.log(arr);
递归排序
var arr = [2, 32, 45, 22, 12];
console.log(func(arr));
function func(arr) {
    if (arr.length <= 1) {
        return arr;
    }
    var left = [];
    var right = [];
    var num = arr.shift()
    for (var i = 0; i < arr.length; i++) {
        var v = arr[i];
        if (v > num) {
            right.push(v);
        } else {
            left.push(v);
        }
    }
    return func(left).concat(num, func(right));
}

方法

数组反转

数组.reverse()

数组的截取

数组.slice(起始下标,结束下标);

var arr = [‘a’,‘b’,‘c’,‘d’,‘e’];
数组.slice();没参数,返回全部
数组.slice(2);一个参数是起始下标   // [‘c’,‘d’,‘e’]
数组.slice(2,4); //[‘c’,‘d’]

数组.slice(4,2);     第一个参数比第二个参数大,返回[ ]
数组.slice(2,-1);同数组.slice(2,-1+5);负数同长度相加,//[‘c’,‘d’];

var arr = [32,4,2,4,3,4,2,23]
找到返回下标,找不到返回 -1
数组.indexOf(要查找的项,[起始位置]);

arr.indexOf(4)    // 1
arr.indexOf(4,2)    // 3
arr.indexOf(4,4)    // 5

数组.lastIndexOf(要查找的项,[起始位置]) 从右向左查找
arr.lastIndexOf(4)    // 5

数组去重
function fn(arr){
	for (var i = 0; i < arr.length; i++) {
		for (var j = i + 1; j < arr. length; j++){
			if (arr[i] === arr[j]){
				arr.splice(j,1);
				j--;
			}
		}
	}
	return arr;
}

判断参数是否是数组, 是返回true , IE8及以下不支持。

Array.isArray(参数)

为什么用这个   ?

typeof []  和 typeof null/对象   返回的都是 Object

数组的迭代方法:

参数:数组项,下标,数组本身
作用:循环数组,没有返回值,仅仅替代for循环
数组.forEach(function(item,index,array){})

作用:数组循环,返回由函数调用结果组成的新数组。
数组.map(function(item,index,array){ })

var arr = [2,3,4];
var n = arr.map( function (item,index) {
//console.log( item,index);
return item * 2;
});
console.log(n); //[4,6,8]

作用:循环数组,返回由函数调用结果为true的项,组成新数组
数组.filter(function(item,index,array){ });

var arr = [2,3,4];
var n = arr.filter(function (item,index,array) {
	return item > 3;
});
console.log(n);

作用:循环数组,如果每一项函数调用的结果为true 则返回true.
数组.every(function(item,index,array){  })

var arr = [2,3,4,10,20];
var n = arr.every (function (item) {
	return item > 1;
});
console.log(n);

作用:只要有一个为真,则返回为真.
数组.some(function(){  })

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值