Array对象属性和方法参考

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoermingn/article/details/53008407

快速搜索:ctrl+f

创建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

猜你喜欢

转载自blog.csdn.net/xiaoermingn/article/details/53008407
今日推荐