数组

来源:互联网 发布:如果女朋友是病娇 知乎 编辑:程序博客网 时间:2024/06/18 08:47

数组

1.声明数组的两种方式

(1)Array构造函数

var colors = new Array();

构造函数的参数有两种类型,一种是整数,表示数组的长度;一种是数组的项,可以是任意类型。

var colors = new Array(20);   
var colors = new Array("red","blue","green");

(2)字面量方法

var colors = ["red","blue","green"];

注意:最后一项后面不能加‘,’,也不能[,,,,]这样创建空数组。

2. 数组检测方法

(1)instanceof

var ary = [1,23,4];   console.log(ary instanceof Array);  //true

(2)原型链方法

var ary = [1,23,4];console.log(ary.__proto__.constructor==Array);console.log(ary.constructor == Array);

上述两种方式的问题在于,它假设只有一个全局执行环境。如果网页中存在多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组就与在第二个框架中原生创建的数组分别具有各自不同的构造函数。

(3)es5中使用的方法

利用es5的isArray()方法:

var ary = [1,23,4];```

console.log(Array.isArray(ary));

相当准确,但是会对浏览器的版本有要求,出现#### (4)toString()方法

var ary = [1,23,4];
Object.prototype.toString.call(ary) == ‘[object Array]’; //true

可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,把需要检测的对象作为第一个参数传入。  没有兼容性要求。缺点:只能判断对象,12种对象。  #####比较稳妥的方法::首先判断浏览器是不是支持es5,`typeof isArrray == function`3.数组操作方法----####(1)栈方法  push() 方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。  `var numbers = [1, 2, 3];`  `numbers.push(4);`  `console.log(numbers); // [1, 2, 3, 4]`  pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。  `let a = [1, 2, 3];`  `a.length; // 3`  `a.pop(); // 3`  `console.log(a); // [1, 2]`  `a.length; // 2`  ####(2)队列方法      shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。`let a = [1, 2, 3];`  `let b = a.shift();`  `console.log(a); // [2, 3]`  `console.log(b); // 1`    shift 方法移除索引为 0 的元素(即第一个元素),并返回被移除的元素,其他元素的索引值随之减 1。如果 length 属性的值为 0 (长度为 0),则返回 undefined。  unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度。`let a = [1, 2, 3];`   `a.unshift(4, 5);`  `console.log(a);// [4, 5, 1, 2, 3]`  ####(3)重排序方法   sort() 方法在适当的位置对数组的元素进行排序,并返回数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。  

var fruit = [‘cherries’, ‘apples’, ‘bananas’];
fruit.sort(); // [‘apples’, ‘bananas’, ‘cherries’]
var scores = [1, 10, 21, 2];
scores.sort(); // [1, 10, 2, 21]“`

自定义排序:

var numbers = [4, 2, 5, 1, 3];numbers.sort(function(a, b) {  return a - b;});console.log(numbers);// [1, 2, 3, 4, 5]

伪数组:

(1)html的DOM节点
(2)apply方法的arguments对象。

伪数组是不能调用数组的操作方法的。那么怎样将伪数组变成数组呢。
有网友总结的4中方式:
(1)声明一个空数组,空过遍历伪数组把它们重新添加到新的数组中:

原创粉丝点击