JS数组基础知识总结
2016-10-17 23:10
701 查看
一、所有数组实例都是继承自Array.prototype。特别的,Array.prototype本身也是数组:
Array.prototype的属性特性writable、enumerable、configurable都是false。Array.prototype属性有constructor和length。
二、数组的常见方法
1、Array.isArray():判断某个值是否是数组
2、Array.prototype.concat():数组的合并(或连接)
此方法是将本对象(this指向的对象)以及所有参数中的数组类型的值或非数组值按照顺序拷贝添加到一个新的数组,并返回这个新数组。其中,数组中的值的拷贝分为按值和按引用拷贝:
(1)如果是字符串和数字(不含包装类型的String和Number对象),直接拷贝到新数组中。
(2)如果是对象引用,该方法将拷贝对象引用到新的数组,这样原数组和新数组的引用指向了同一个实例,当原引用的值被修改了,也会影响新合并引用的值。
所以,形如arr.concat()可以作为对一个一维数组(内部不包含引用类型)的深拷贝。
3、Array.prototype.forEach(): 数组元素的遍历回调
通过forEach()方法实现对象的拷贝实现。
4、Array.prototype.indexOf():指定元素的第一个索引值
返回给定元素在数组中的第一个索引值,没有找到则返回-1
支持第二个参数,指定从什么位置开始查找。
5、Array.prototype.join():数组元素的拼接
分隔符默认是逗号
6、Array.prototype.lastIndexOf():指定元素在数组最后的索引
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
相关文章推荐
- 一个大型例子搞定 Javascript 的数组基础知识 ——总结《Javascript 权威指南》第六版数组基础知识
- 【Js】数组基础知识-思维导图
- Javascript基础知识盲点总结——数据类型和数组
- js基础学习之--BOM基础知识总结
- Java基础知识强化105:打印数组的方法总结
- C/C++基础知识总结——数组、指针域、字符串
- Java基础知识总结(数组)
- JS基础知识总结
- 黑马程序员_JavaSE基础知识总结三:方法和数组
- JS之DOM基础知识总结
- 黑马程序员 Java基础知识总结-数组
- JS基础——数组总结
- js 基础知识 对象与数组
- 7个JS基础知识总结
- C#高级语法基础知识总结3——数组
- 7个JS基础知识总结
- js基础知识总结(全)
- JS基础——数组总结
- js基础知识总结
- [C++ 面试基础知识总结]字符串,向量和数组