js 数组Array的常用方法 es3 es5 es6

本文详细介绍了JavaScript数组Array的常用方法,包括ES3的增删、排序和转换方法,如push、pop、sort等;ES5的迭代、位置和归并方法,如forEach、map、reduce;以及ES6新增的from、find、findIndex和includes等。通过这些方法,你可以更高效地操作和管理数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js 数组Array的常用方法 es3 es5 es6

1.伪数组

1.1对象和伪数组的差别:

1.对象的原型链上只有Object.prototype,而数组的原型链上有Array.prototype和Object.prototype —所以伪数组无法使用数组的方法;
2.对象没有length属性,数组有并且自动更新;
3.对象根据键值对取值,而数组根据序号(索引)取值。

1.2定义伪数组:

1.拥有length属性,其他属性为非负整数字符串(因为对象使用[]来取值,会将数值隐式转换为字符串)—伪数组是对象,键比较特殊;
2.不具有数组具有的方法,即原型链上没有Array.prototype。

内容如下:

<script>
    var fakeArray = {
        "0":"first",
        "1":"second",
        "2":"third",
    	length:3,
    }
</script>

2.数组方法

2.1 ES3数组方法:

增删系列方法:push()、unshift()、pop()、shift()、concat()、slice()、splice();

排序系列方法:reverse()、sort();

数组与字符串相互转换系列方法:toString()、join()、split();

这一块比较熟悉,主要从参数,返回值和式例来归纳:

增删系列方法
push()

push(元素1,元素2,…,元素n)

语法:arr.push(element1, …, elementN)

功能:将一个或多个元素添加到数组的尾部。
返回值:添加元素后,新数组的长度。—改变原数组

<script>
        var arr = [1]
        arr.push(2,3,4)
        console.log(arr) //[1, 2, 3, 4]
</script>
unshift()

unshift(元素1,元素2,…,元素n)

语法:arr.unshift(element1, …, elementN)

功能:将一个或多个元素添加到数组的开头。
返回值:添加元素后,新数组的长度。—改变原数组

<script>
        var arr = [1]
        arr.unshift(2,3,4)
        console.log(arr) //[2, 3, 4, 1]
</script>
pop()

语法:arr.pop()

功能:从数组中删除最后一个元素。
返回值:删除元素后,被删除的元素。—改变原数组

<script>
        var arr = [1,2,3,4]
        arr.pop() //4
        console.log(arr) //[1, 2, 3]
</script>
shift()

语法:arr.shift()

功能:从数组中删除第一个元素。
返回值:删除元素后,被删除的元素。—改变原数组

<script>
        var arr = [1,2,3,4]
        arr.shift() //1
        console.log(arr) //[2, 3, 4]
</script>

concat()

concat(数组1,数组2,…,数组n)

语法:var newArray = oldArray.concat(array1[, array2[, …[, arrayN]]])

功能:用于合并两个或多个数组。
返回值:合并后的新数组—不会改变原数组

<script>
        var a = [0,1,2],
            b = [3,4,5],
            c = [6,7,8];
        a.concat() //[0, 1, 2]
        a.concat(b,c) //[0, 1, 2, 3, 4, 5, 6, 7, 8]
</script>
slice()

slice(开始索引[必填],终止处索引[选填])

语法:arr.slice([begin[, end]])

功能:返回一个新的数组对象,这一数组是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。
返回值:一个含有被提取元素的新数组—不会改变原数组。

注:如果 end 被省略,则 slice 会一直提取到原数组末尾。如果 end 大于数组的长度,slice 也会一直提取到原数组末尾。

<script>
        var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
        var citrus = fruits.slice(1, 3);
        console.log(fruits)//['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
        console.log(citrus)//['Orange','Lemon'];
</script>
splice()

splice(开始索引[必填],删除长度[必填],删除处添加的元素[选填])

语法:array.splice(start[, deleteCount[, item1[, item2[, …]]]])

功能:通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。
返回值:由被删除的元素组成的一个数组—会改变原数组。

<script>
        var arr = [1,2,3,4];
        arr.splice(1,2) // [2, 3]
        console.log(arr) //[1, 4]
</script>
排序系列方法:
reverse()

语法:arr.reverse()

功能:将数组中元素的位置颠倒。
返回值:原数组元素颠倒后的新数组—会改变原数组。

<script>
        var arr = [1,3,5,2,4,6]
        arr.reverse() // [6, 4, 2, 5, 3, 1]
        console.log(arr) // [6, 4, 2, 5, 3, 1]
</script>
sort()

sort(函数[非必填])

语法:arr.sort([compareFunction])

功能:将数组中元素的位置颠倒。
返回值:原数组元素颠倒后的新数组—会改变原数组。

<script>
        var arr = [1,45,23,12,11,4,6];
        // 升序
        arr.sort(function(a,b){
        return a - b
        })  //[1, 4, 6, 11, 12, 23, 45]
        // 降序
        arr.sort(function(a,b){
        return b - a
        })
        //[45, 23, 12, 11, 6, 4, 1]
</script>
数组与字符串相互转换系列方法:
数组变字符串
toString()

语法:arr.toString()

功能:把数组元素依次用“,”拼接成字符串。
返回值:拼接后的字符串—不会改变原数组。

<script>
        var arr = [1,45,23,12,11,4,6]
        arr.toString() //"1,45,23,12,11,4,6"
        console.log(arr) //[1, 45, 23, 12, 11, 4, 6]
</script>
join()

join(字符[非必填])

语法:arr.toString()

功能:将一个数组的所有元素连接成一个字符串。
返回值:拼接后的字符串—不会改变原数组。

<script>
        var arr = [1,45,23,12,11,4,6]
        arr.join() //"1,45,23,12,11,4,6"
        arr.join('|') //"1|45|23|12|11|4|6"
        console.log(arr) //[1, 45, 23, 12, 11, 4, 6]
</script>
字符串变数组
split()

split(字符[非必填])

语法:str.split([separator[, limit]])

功能:使用指定的分隔符字符串将一个String对象分割成子字符串数组。
返回值:返回原字符串以分隔符出现位置分隔而成的一个Array。

<script>
        var str = "1,45,23,12,11,4,6",
            str.split(',') //["1", "45", "23", "12", "11", "4", "6"]
            console.log(str) //"1,45,23,12,11,4,6"
</script>

2.2 ES5数组方法:

迭代方法:forEach()、map()、filter()、some()、every();

位置方法:indexOf() 和 lastIndexOf();

归并方法:reduce()、reduceRight()。

迭代方法:

这些方法都接收两个参数,第一个参数是一个函数,他接收三个参数,数组当前项的值(value)、当前项在数组中的索引(index)、数组对象本身(array)。第二个参数是执行第一个函数参数的作用域对象,也就是上面说的函数中this所指向的值,如果为空则指向window。这几种方法都不会改变原数组。

forEach()

forEach():对数组中的每一项运行给定函数,没有返还值。

语法:arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

特点:
1.回调函数中有三个参数(item, index, array);
2.没有返回值,不会改变原数组;
3.只能遍历数组不能遍历伪数组;
4.内部的this指向window.
5.thisArg 可选参数。当执行回调函数callback时,用作this的值(即改变this的指向)。

forEach 循环不能被 return 终止,其作用和 for循环中的continue 相似只是跳出当前循环,继续执行下一次循环。在 forEach 中也不能使用 break,continue来跳出循环,同样会有报错。

<script>
        var arr = ['pink', 'deeppink', 'lightpink', 'hotpink']

        arr.forEach(function (item, index, arr) {
            if (index == 1) {
                return;
            }
            console.log(item);
        })
</script>
map()

map():对数组中的每一项运行给定函数,返回一个由原数组每个元素执行回调函数的结果组成的新数组。

语法:var new_array = arr.map(callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])

特点:
1.回调函数中有三个参数(item, index, array);
2.有返回值,返回一个由原数组每个元素执行回调函数的结果组成的新数组,不会改变原数组;
3.只能遍历数组不能遍历伪数组;
4.内部的this指向window.
5.thisArg 可选参数。当执行回调函数callback时,用作this的值(即改变this的指向)。

<script>
        var arr = [11,22,33,44,55];
        var newArr = arr.map(function(item,index,arr){
                    console.log(item,index,arr);
                    return item+1;
            });
            console.log(newArr);
</script>
filter()

filter():对数组中的每一项运行给定函数,返回执行该回调函数为true的项组成的新数组。利用这个方法可对数组元素进行过滤筛选。

语法:var newArray = arr.filter(callback(currentValue[, index[, array]])[, thisArg])

特点:
1.回调函数中有三个参数(item, index, array);
2.有返回值,返回一个由原数组每个元素执行回调函数结果为true的项组成的新数组,不会改变原数组;
3.只能遍历数组不能遍历伪数组;
4.内部的this指向window.
5.thisArg 可选参数。当执行回调函数callback时,用作this的值(即改变this的指向)。

<script>
        var arr = [11,22,33,44,55];
        var newArr = arr.filter(function(item,index,arr){
        console.log(item,index,arr);
        if(item > 22) return true;
        });
        console.log(newArr);
</script>
every()和some()

every():测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
some():测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。**

语法:arr.every(callback(element[, index[, array]])[, thisArg])
语法:arr.some(callback(element[, index[, array]])[, thisArg])

特点:
1.回调函数中有三个参数(item, index, array);
2.有返回值,返回值是布尔值,不会改变原数组;
3.只能遍历数组不能遍历伪数组;
4.内部的this指向window.
5.thisArg 可选参数。当执行回调函数callback时,用作this的值(即改变this的指向)。

<script>
        var arr = [1, 2, 3, 4, 5];
        arr.every(function(item){return item < 10}) // true
        arr.every(function(item){return item % 2 === 0}) // false
        arr.some(function(item){return item % 2 === 0}) // true
        arr.some(isNaN) // false: a不包含非数值元素
</script>

注:
some()在有一个数组元素满足回调函数条件时就会停止遍历数组元素,返回布尔值true,否则一直循环;
every()则相反,它会判定每一个数组元素是否满足回调函数条件,如果全部满足则返回布尔值true,否则返回false。

位置方法:
indexOf()和lastIndexOf()

indexOf():返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

lastIndexOf():该方法从数组的末尾开始向前查找,查到返回下标,查不到返回-1。

语法:arr.indexOf(searchElement[, fromIndex])
语法:arr.lastIndexOf(searchElement[, fromIndex])

特点:
1.方法中有两个参数(Element, fromIndex);—要查找元素和开始查找的位置。
2.有返回值,返回首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1。不会改变原数组;

拓展:如果该索引值fromIndex大于或等于数组长度,意味着不会在数组里查找,返回-1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0.

<script>
        var array = [2, 5, 9];
        array.indexOf(2);     // 0
        array.indexOf(7);     // -1
        array.indexOf(9, 2);  // 2
        array.indexOf(2, -1); // -1
        array.indexOf(2, -3); // 0
        var array = [2, 5, 9, 2];
        var index = array.lastIndexOf(2);   // 3
        index = array.lastIndexOf(7);      // -1
        index = array.lastIndexOf(2, 3);   // 3
        index = array.lastIndexOf(2, 2);   // 0
        index = array.lastIndexOf(2, -2);  // 0
        index = array.lastIndexOf(2, -1);  // 3
</script>
归并方法
reduce()和reduceRight()

reduce()和reduceRight()可自行拓展。

2.3 ES6数组方法:

form()

语法:Array.from(arrayLike[, mapFn[, thisArg]])

功能:将伪数组或可遍历对象转换为真正的数组;
返回值:一个新的数组实例。

<script>
        let arrayLike = {
            '0': 'a',
            '1': 'b',
            '2': 'c',
            length: 3
        }; 
        //转成数组
        let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
</script>
find()

语法:arr.find(callback[, thisArg])

功能:数组中第一个满足所提供测试函数的元素的值;
返回值:符合测试函数的数组元素,没有则返回 undefined。

<script>
        let ary = [{
            id: 1,
            name: '张三'
        }, { 
            id: 2,
            name: '李四'
        }]; 
        let target = ary.find((item, index) => item.id == 2);//找数组里面符合条件的值,当数组中元素id等于2的查找出来,注意,只会匹配第一个
</script>
findIndex()

语法:arr.findIndex(callback[, thisArg])

功能:用于找出第一个测试函数的数组成员的位置;
返回值:数组中通过提供测试函数的第一个元素的索引,如果没有找到返回-1。

<script>
        let ary = [1, 5, 10, 15];
        let index = ary.findIndex((value, index) => value > 9); 
        console.log(index); // 2
</script>
includes()

语法:arr.includes(valueToFind[, fromIndex])

功能:判断某个数组是否包含给定的值。
返回值:返回一个布尔值。

<script>
        [1, 2, 3].includes(2) // true
        [1, 2, 3].includes(4) // false
</script>
软件介绍: ArrayNetworksL3Setu是移动代理点客户端软件,也就是常说的那个红A。需要安装这个软件后才能登陆。BOSS 客户端更新说明为了解决现有BOSS系统BUG,现在需要升级各代办点终端的SSL 的插件,具体插件步骤如下:1.将附件中名称为:“ArrayNetworksL3OnlyWebSetup.zip”的安装包拷贝到代办终端上。 2.在代办终端上解压该文件3.点击“setup.exe”4.一步步安装首先remove现有的插件。点击“next”,点击“finish”,再点击“setup.exe”,点击“finish”完成安装。完成后开始使用,打开IE浏览器。输入移动 IP地址。IE版本可能会出现,点击“允许”,当右下角出现“A” 上面出现8.4.6.80确认为新的插件版本。出现红A,没有任何报错就表示安装正常。-----------------------------------------------------------------------------------------------------如果安装有问题或者不能正常访问,请单独安装客户端。安装的文件名称ArrayNetworksL3SetupX32.zip,ArrayNetworksL3SetupX64.zip请对应系统的版本安装1查看自己的系统的版本,32位,64位2.“计算机”-->“属性”查看自己的是32位的还是64位的操作系统。请对应版本安装。4.安装客户端软件的步骤,首先解压文件。点击 “setup.exe”安装完成。打开IE登陆SSL 如重启失败请重置浏览器的高级设置。点击---“还远高级设置”---“确定”再次登陆
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值