Array对象属性和方法参考
2016-11-02 15:27
183 查看
快速搜索:ctrl+f
var arr1=new Array();
var arr2=new Array(5); //初始化数组大小为5
var arr3=new Array(“aa”,”bb”,”cc”); //初始化数组值
通过字面量
var arr=[“aa”,”bb”,”cc”];
注:以下arr表示一个数组,Array表示Array构造函数
arr.input 通过匹配正则表达式得到的子字符串数组(不使用全局模式,只得到1个结果)具有input属性,返回源字符串
arr.length 数组中所包含元素的值,该属性既可以读取也可以写入。如果将length设为比原来值更大,则有新的元素被追加到数组中;如果将length设为比原来值更小,则数组将从尾部被截短。
arr.constructor 返回arr是由哪个原型构造的
Array.prototype 在对象的原型上添加新的属性或方法
arr.join(separator) 使用指定分隔符,将所有的数组元素连接为一个字符串,该方法不会改变源数组。
arr.indexOf(searchelement[,start]) 搜索一个数组,以查找指定元素在数组中第一次出现的位置,如果没有找到,返回-1。
arr.lastIndexOf(searchelement[,start]) 搜索一个数组,以查找指定元素在数组中最后一次出现的位置,如果没有找到,返回-1。原来是从右往左查找,返回找到的第一个的位置。
arr.pop() 返回数组中的最后一个元素,并将其从数组中移除,该方法会改变源数组。
arr.shift() 返回数组中的第一个元素,并将其从数组中移除,该方法会改变源数组。
arr.push(val1,val2,…) 将一个或多个元素添加到数组尾部,并返回最终的数组长度,该方法会改变源数组。
arr.unshift(val1,val2,…) 将一个或多个元素添加到数组开头,并返回最终的数组长度,该方法会改变源数组。
arr.reverse() 反转元素中的顺序,该方法会改变源数组。
arr.slice(beginIndex[,endIndex]) 复制数组中的一部分,并返回一个新数组,该方法不会改变源数组。传入两个参数都是整数时,第二个参数必须大于第一个参数,这样才能返回一个有价值的结果。左闭右开区间
arr.sort([sortFn]) 为数组指定排序规则并对整数组排序,如果省略sortFn则将按升序对元素进行排序,返回已拍好的数组,该方法会改变源数组。
arr.splice(start,deleteCount,[element0[,…]]) 从 start 位置开始移除指定个数deleteCount个元素,并插入新元素[element0[,…]。返回值是一个由所移除的元素组成的新 Array 对象。
arr.toLocaleString() 将数组转换为本地字符串。
arr.toString() 将数组转换为字符串。
arr.valueOf() 返回对象基本值
arr.some(callbackFn[,thisObject]) 如果至少有一个元素通过了测试,则返回true,否则返回false。
arr.filter(callbackFn[,thisObject]) 返回一个包含所有通过测试元素的数组。
arr.map(callbackFn[,thisObject]) 对数组中每个元素调用callbackFn函数,并返回包含结果的数组(true/false)。
arr.forEach(callbackFn[,thisObject]) 数组中每个元素(缺少的元素除外)都调用一次callbackFn函数。
用法类似,以every()为例:
arr.reduce(callbackFn[,initialValue]) 对数组中的所有元素按照从左到右的顺序调用指定的回调函数。该回调函数的返回值为累积结果,并且每一次的返回值作为下一次的参数。如果提供了initialValue,则第一次的preValue为initialValue,否则为数组中第一个元素。回调函数的参数可以有四个function(previousValue,currentValue,currentIndex,array)
arr.reduceRight() 同reduce(),只是数组中的元素按照从右到左的顺序调用函数。
方法类似,以reduce()为例:
Array.of() Array.of()基本可以代替Array()或new Array(),并且不存在由于参数不同而导致的重载
arr.copyWithin(target, start, end) 将数组arr中start位置到end位置(不包括end位置)的值,从target位置开始覆盖arr数组中原来的值,原数组会被改变
arr.find(callback) 数组中所有成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员,如果没有符合条件的成员,则返回undefined。可以发现NaN,弥补了indexOf的不足。
arr.findIndex(callback) findIndex方法和find方法类似,但是findeIndex返回的是第一个符合条件的数组成员的位置,如果所有成员都不符合条件则返回-1。
arr.fill(value, start, end) 将[start,end)位置的值使用给定值fillvalue填充,start和end省略则填充整个数组,用于空数组的初始化很方便。
arr.entries() 遍历键值对
arr.keys() 遍历键名
arr.values() 遍历键值
arr.includes(val, start) 类似字符串的includes,返回一个布尔值,表示某个数组是否包含给定的值,start为空则表示从头开始,该方法属于ES7,但高版本chrome已经能支持
创建Array对象
通过new关键字:var arr1=new Array();
var arr2=new Array(5); //初始化数组大小为5
var arr3=new Array(“aa”,”bb”,”cc”); //初始化数组值
通过字面量
var arr=[“aa”,”bb”,”cc”];
注:以下arr表示一个数组,Array表示Array构造函数
属性
arr.index 通过匹配正则表达式得到的子字符串数组(不使用全局模式,只得到1个结果)具有index属性,返回子字符串第一个字符在源字符串中的索引位置var str="hello world say hello"; var reg=/llo/ var arr=str.match(reg); arr.index; //2
arr.input 通过匹配正则表达式得到的子字符串数组(不使用全局模式,只得到1个结果)具有input属性,返回源字符串
var str="hello world say hello"; var reg=/llo/ var arr=str.match(reg); arr.input; //hello world say hello
arr.length 数组中所包含元素的值,该属性既可以读取也可以写入。如果将length设为比原来值更大,则有新的元素被追加到数组中;如果将length设为比原来值更小,则数组将从尾部被截短。
var arr=["aa","bb","cc","dd"]; arr.length; //4 arr.length=6; arr; //["aa","bb","cc","dd",undefined,undefined] arr.length=2; arr; //["aa","bb"]
arr.constructor 返回arr是由哪个原型构造的
var arr = new Array(); arr.constructor == Array; //true
Array.prototype 在对象的原型上添加新的属性或方法
Array.prototype.text="abc"; //在原型上添加新的属性 Array.prototype.getText=function(){ return "hello world"; } var arr=new Array(); arr.text; //abc arr.getText(); //hello world
方法
1.简单操作数组
arr1.concat(element0,…,elementN) 将一个数组与另一个数组或者元素合并,该方法不会改变源数组。var arr1=["a","b","c"]; var arr2=["d","e","f"]; arr1.concat(arr2); //["a","b","c","d","e","f"] arr1.concat(10,11,12,13); //["a","b","c",10,11,12,13]
arr.join(separator) 使用指定分隔符,将所有的数组元素连接为一个字符串,该方法不会改变源数组。
var arr=["我","要","合","体"]; arr.join("o0-0o"); //我o0-0o要o0-0o合o0-0o体
arr.indexOf(searchelement[,start]) 搜索一个数组,以查找指定元素在数组中第一次出现的位置,如果没有找到,返回-1。
var arr=["one","two","three","four","one","five","nine"]; arr.indexOf("two"); //1 arr.indexOf("ten"); //-1 arr.indexOf("one",2); //4 arr.indexOf("one",-5); //4,用负数可以表示从倒数第几个开始查找
arr.lastIndexOf(searchelement[,start]) 搜索一个数组,以查找指定元素在数组中最后一次出现的位置,如果没有找到,返回-1。原来是从右往左查找,返回找到的第一个的位置。
var arr=["one","two","three","four","one","five","nine"]; arr.lastIndexOf("one"); //4 arr.lastIndexOf("ten"); //-1 arr.lastIndexOf("one",2); //0,从第二个开始向左查找 arr.lastIndexOf("one",-1); //4,用负数可以表示从倒数第几个开始查找
arr.pop() 返回数组中的最后一个元素,并将其从数组中移除,该方法会改变源数组。
var arr=["one","two","three","four","one","five","nine"]; arr.pop(); //nine arr; //["one","two","three","four","one","five"]
arr.shift() 返回数组中的第一个元素,并将其从数组中移除,该方法会改变源数组。
var arr=["one","two","three","four","one","five","nine"]; arr.shift(); //one arr; //["two","three","four","one","five","nine"]
arr.push(val1,val2,…) 将一个或多个元素添加到数组尾部,并返回最终的数组长度,该方法会改变源数组。
var arr=["one","two","three"]; var len=arr.push('four','five'); len; //5 arr; //["one","two","three","four","five"]
arr.unshift(val1,val2,…) 将一个或多个元素添加到数组开头,并返回最终的数组长度,该方法会改变源数组。
var arr=["one","two","three"]; var len=arr.unshift('four','five'); len; //5 arr; //["four","five","one","two","three"]
arr.reverse() 反转元素中的顺序,该方法会改变源数组。
var arr=["one","two","three"]; arr.reverse(); //["three","two","one"]
arr.slice(beginIndex[,endIndex]) 复制数组中的一部分,并返回一个新数组,该方法不会改变源数组。传入两个参数都是整数时,第二个参数必须大于第一个参数,这样才能返回一个有价值的结果。左闭右开区间
var arr=["one","two","three","four","five","nine"]; arr.slice(3); //["four","five","nine"] arr.slice(-1); //["nine"],负数代表从倒数开始 arr.slice(3,5); //["four","five"] arr.slice(3,-1); //["four","five"] arr.slice(3,2); //[]
arr.sort([sortFn]) 为数组指定排序规则并对整数组排序,如果省略sortFn则将按升序对元素进行排序,返回已拍好的数组,该方法会改变源数组。
var arr=["one","two","three","four","five","nine"]; arr.sort(); //["five", "four", "nine", "one", "three", "two"] function CompareForSort(first, second) { if (first == second) return 0; if (first > second) return -1; else return 1; } arr.sort(CompareForSort); //["two", "three", "one", "nine", "four", "five"]
arr.splice(start,deleteCount,[element0[,…]]) 从 start 位置开始移除指定个数deleteCount个元素,并插入新元素[element0[,…]。返回值是一个由所移除的元素组成的新 Array 对象。
var arr=["one","two","three","four","five","nine"]; arr.splice(1,2,"哈哈","拜拜"); //["two","three"] arr; //["one","哈哈","拜拜","four","five","nine"]
arr.toLocaleString() 将数组转换为本地字符串。
arr.toString() 将数组转换为字符串。
var arr=["one","two","three"]; arr.toLocaleString(); //one,two,three arr.toString(); //one,two,three
arr.valueOf() 返回对象基本值
var arr=["one","two","three"]; arr.valueOf(); //one,two,three
2.定义callback函数
arr.every(callbackFn[,thisObject]) 检查一个数组中的每个元素是否都符合callback中定义的规则,返回true或false。thisObject可以为callbackFn引用this关键字的对象,如果省略,则undefined将用作this值。只要检测到false就停止并返回false,undefined的元素不执行回调。arr.some(callbackFn[,thisObject]) 如果至少有一个元素通过了测试,则返回true,否则返回false。
arr.filter(callbackFn[,thisObject]) 返回一个包含所有通过测试元素的数组。
arr.map(callbackFn[,thisObject]) 对数组中每个元素调用callbackFn函数,并返回包含结果的数组(true/false)。
arr.forEach(callbackFn[,thisObject]) 数组中每个元素(缺少的元素除外)都调用一次callbackFn函数。
用法类似,以every()为例:
var arr1=["one","two","three","four","five","nine"]; var arr2=[]; function isLong(value,index,array){ return (value.length>2); } arr1.every(isLong); //true arr2.every(isLong); //true,空数组也返回true var numbers=[10,15,19]; function checkNum(value){ return (value>this.min); } var obj={min:9} numbers.every(checkNum,obj); //true,传入obj引用this关键字
arr.reduce(callbackFn[,initialValue]) 对数组中的所有元素按照从左到右的顺序调用指定的回调函数。该回调函数的返回值为累积结果,并且每一次的返回值作为下一次的参数。如果提供了initialValue,则第一次的preValue为initialValue,否则为数组中第一个元素。回调函数的参数可以有四个function(previousValue,currentValue,currentIndex,array)
arr.reduceRight() 同reduce(),只是数组中的元素按照从右到左的顺序调用函数。
方法类似,以reduce()为例:
function appendCurrent (previousValue, currentValue) { return previousValue + "::" + currentValue; } var arr=["abc", "def", 123, 456]; arr.reduce(appendCurrent); //abc::def::123::456
3.ES6新增方法
Array.from(array-like) 将类似数组的对象或者可遍历的对象(包括ES6新增的数据结构Set和Map)转换为真正的数组let arrayLike = { '0':'a', '1':'b', '2':'c', length:3 }; let arr2=Array.from(arrayLike); arr2;//["a", "b", "c"] let str='hello'; let str2=Array.from(str); str2;//["h", "e", "l", "l", "o"]
Array.of() Array.of()基本可以代替Array()或new Array(),并且不存在由于参数不同而导致的重载
var arr=Array.of(3,4,5); arr;//[3, 4, 5]
arr.copyWithin(target, start, end) 将数组arr中start位置到end位置(不包括end位置)的值,从target位置开始覆盖arr数组中原来的值,原数组会被改变
[0,1,2,3,4,5].copyWithin(0,1,2);//[1,1,2,3,4,5] [0,1,2,3,4,5].copyWithin(0,-2,-1);//[4,1,2,3,4,5] 负数代表倒数
arr.find(callback) 数组中所有成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员,如果没有符合条件的成员,则返回undefined。可以发现NaN,弥补了indexOf的不足。
var arr=[1,2,3,4,5]; arr.find((n)=> n>3);//4 [NaN].find(n=>Object.is(NaN,n));//NaN
arr.findIndex(callback) findIndex方法和find方法类似,但是findeIndex返回的是第一个符合条件的数组成员的位置,如果所有成员都不符合条件则返回-1。
var arr=[1,2,3,4,5]; arr.findIndex((n)=> n>3);//3
arr.fill(value, start, end) 将[start,end)位置的值使用给定值fillvalue填充,start和end省略则填充整个数组,用于空数组的初始化很方便。
var arr=new Array(3).fill('a'); arr;//["a", "a", "a"] arr.fill('b',1,2);//["a", "b", "a"]
arr.entries() 遍历键值对
arr.keys() 遍历键名
arr.values() 遍历键值
var arr=['a','b','c']; for(let element of arr.entries){ console.log(element); } //[0,"a"] //[1,"b"] //[2,"c"] for(let index of arr.keys()){ console.log(index); } //0 //1 //2 for(let val of arr.values()){ console.log(val); } //'a' //'b' //'c'
arr.includes(val, start) 类似字符串的includes,返回一个布尔值,表示某个数组是否包含给定的值,start为空则表示从头开始,该方法属于ES7,但高版本chrome已经能支持
[1,2,3].includes(2);//true ['1','2','3'].includes(2);//false
相关文章推荐
- javascript中的array对象属性及方法
- 【JavaScript】(6)Object、String、Array、Date对象的方法、属性(constructor、prototype)
- JavaScript 内置对象(一):Array 对象(构造函数、属性和方法)
- JavaScript对象、事件、属性及方法参考大全
- JavaScript 内置对象(一):Array 对象(构造函数、属性和方法)
- javascript中的Array对象属性和方法整理
- JavaScript之数组方法(Array对象属性)
- String对象属性和方法参考
- javascript中的Array对象属性和方法整理
- XMLDOM对象方法:对象属性
- Velocity Quick Start [5] - 在模板中使用对象属性、方法
- js入门·对象属性方法大总结
- adodb.stream对象的方法/属性
- 应用程序中的所有线程都可以访问方法中的公用字段。要同步对公用字段的访问,您可以使用属性替代字段,并使用 ReaderWriterLock 对象控制访问。为此,请按照下列步骤操作:
- [Javascript]xmlhttp的对象方法属性,用for x in obj的方法得到
- ADO三大对象的属性、方法、事件及常数(三)
- 动态调用对象的属性和方法——性能和灵活性兼备的方法
- 在实践中磨练——ASP错误:"对象不支持此属性或方法: 'eof' "
- js submit() 对象不支持此属性或方法
- XMLDOM对象方法:对象属性