您的位置:首页 > Web前端 > JavaScript

JS数组基础知识总结

2016-10-17 23:10 701 查看
一、所有数组实例都是继承自Array.prototype。特别的,Array.prototype本身也是数组:

console.log(Array.isArray(Array.prototype));//true


Array.prototype的属性特性writable、enumerable、configurable都是false。Array.prototype属性有constructor和length。

console.log(Array.prototype.constructor);
//function Array() { [native code] }


二、数组的常见方法

1、Array.isArray():判断某个值是否是数组

Array.isArray([]);//true
Array.isArray(new Array());//true
Array.isArray(1);//false


2、Array.prototype.concat():数组的合并(或连接)

此方法是将本对象(this指向的对象)以及所有参数中的数组类型的值或非数组值按照顺序拷贝添加到一个新的数组,并返回这个新数组。其中,数组中的值的拷贝分为按值和按引用拷贝:

(1)如果是字符串和数字(不含包装类型的String和Number对象),直接拷贝到新数组中。

(2)如果是对象引用,该方法将拷贝对象引用到新的数组,这样原数组和新数组的引用指向了同一个实例,当原引用的值被修改了,也会影响新合并引用的值。

var num1 = [1, 2, 3];
var num2 = ['a', 'b', 'c'];
var num3 = [7, 8, 9];
var nums = num1.concat(num2, num3);
// nums=[1, 2, 3,'a', 'b', 'c', 7, 8, 9]; 原数组 num1, num2, num3 未被修改


var arr = ['a',[2,3,4]];
var copyArr = arr.concat(1,'b');//['a',[2,3,4],1,'b']
arr[1][1] = 5;
console.log(arr);//['a',[2,5,4],1,'b']
console.log(copyArr);//['a',[2,5,4],1,'b']


所以,形如arr.concat()可以作为对一个一维数组(内部不包含引用类型)的深拷贝。

3、Array.prototype.forEach(): 数组元素的遍历回调

array.forEach(function(element,index,array){}[,this])
//this可选,callback内的对象


var a = [3,4,5];
a.forEach(function(ele,i,a){
console.log('ele:'+ele+',i:'+i+',a:'+a);
})


function copy(obj) {
var copy = Object.create(Object.getPrototypeOf(obj));
var propNames = Object.getOwnPropertyNames(obj);

propNames.forEach(function(name) {
var desc = Object.getOwnPropertyDescriptor(obj, name);
Object.defineProperty(copy, name, desc);
});

return copy;
}

var obj1 = { a: 1, b: 2 };
var obj2 = copy(obj1); // obj2 :{a: 1, b: 2}


通过forEach()方法实现对象的拷贝实现。

4、Array.prototype.indexOf():指定元素的第一个索引值

返回给定元素在数组中的第一个索引值,没有找到则返回-1

支持第二个参数,指定从什么位置开始查找。

var arr = [2,3,4,5];
console.log(arr.indexOf(2));//0
console.log(arr.indexOf(4,1));//2


5、Array.prototype.join():数组元素的拼接

分隔符默认是逗号

var b = ['I','love','you'];
console.log(b.join());//I,love,you
console.log(b.join(''));//Iloveyou
console.log(b.join(' '));//I love you
console.log(b.join('-'));//I-love-you


6、Array.prototype.lastIndexOf():指定元素在数组最后的索引

var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
index = array.lastIndexOf(7);
// index is -1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: