数组的所有方法,你都了解吗?|面试前后

面试前后所有数组相关方法的总结,希望对你有所帮助。

目录

一、什么是数组?

数组是一种特殊类型的变量,一次可以保存多个值。

如果您有一个项目列表(例如,汽车品牌列表),将汽车品牌存储在单个变量中将如下所示:

var car1 = "Saab";
var car2 = "Volvo";
var car3 = "BMW"; 

但是,如果您想遍历所有汽车并找到特定值怎么办?如果不是三个汽车品牌而是三百个呢?

解决方案是数组!

数组可以在一个名字下保存很多值,这些值也可以通过引用索引号来访问。

二、创建数组有两种方式1.使用Array构造函数创建数组对象

代码如下(示例):

//使用new Array() 创建数组
var arr1 = new Array();     // 空数组
var arr2 = new Array('苹果', '橘子', '香蕉', '桃子');      //含有4个元素

2.使用“[ ]”字面量创建一个数组

代码如下(示例):

var arr1 = [];      //空数组
var arr2 = ['苹果', '橘子', '香蕉', '桃子'];     //含有4个元素

三、数组方法1.创建数组

  var fruits = ['Apple', 'Banana', 'Orange'];
  console.log(fruits.length);     //3

2. 数组转字符串

  var arr3 = ['a', 'b', 'c', 'a', 'b'];
  console.log(arr3.toString());  //a,b,c,a,b
  console.log(arr3.join('*'));  //a*b*c*a*b

3.在数组末尾添加元素arrayname.push(element);

 // 数组名.push(元素);
 var newLength = fruits.push('Mago');
 console.log(fruits);      //['Apple', 'Banana', 'Orange', 'Mago']
 console.log(newLength);   //4

4.删除数组数组名末尾的元素.pop();

var last = fruits.pop();
console.log(fruits);      //['Apple', 'Banana', 'Orange']
console.log(last);       //Mago

5.删除原数组的第一项,返回被删除元素的值ArrayName.shift()

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var box = fruits.shift();
console.log(box)             //  Banana
console.log(fruits)       // ['Orange', 'Apple', 'Mango']

6.unshift:将参数添加到原始数组的开头并返回数组的长度

var arr = ["Lily","lucy","Tom"];
var count = arr.unshift("Jack","Sean");
console.log(count); // 5
console.log(arr); //["Jack", "Sean", "Lily", "lucy", "Tom"]

7.在数组array name.indexOf(element);中找到一个元素的索引;

  var fruits = ['Apple', 'Banana', 'Orange'];
  var pos = fruits.indexOf('Banana');
  console.log(pos);      //1
  //如果有重复
  var age = [12, 23, 18, 12, 20];
  console.log(age.indexOf(12));    //0
  console.log(age.lastIndexOf(12));   //3

8.ArrayName.splice() 将新元素添加到数组并返回包含已删除元素(如果有)的数组。

示例 1:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi");
//原数组:
//Banana,Orange,Apple,Mango
//新数组:
//Banana,Orange,Lemon,Kiwi,Apple,Mango

第一个参数(2) 定义了应该在哪里添加新元素(拼接)。

第二个参数(0)定义应该删除多少元素。

其余参数(“Lemon”、“Kiwi”)定义要添加的新元素。

示例 2:

var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot']
var n = 2;
var remove = vegetables.splice(n, 2);
console.log(vegetables);         //  ['Cabbage', 'Turnip']
console.log(remove);          //['Radish', 'Carrot']

(通俗的理解js 数组操作类库,2是要删除的编号,n是开始的索引号)

9.反转数组中元素的位置并返回数组。这个方法会改变原来的数组数组名.reverse()

var fruits = ['Apple', 'Banana', 'Orange'];
var newFruits = fruits.push('Mago');
var newFruits = fruits.reverse();
console.log(newFruits);    // ['Mago', 'Orange', 'Banana', 'Apple']

10.排序数组.sort()

sort()函数默认按字符串顺序对值进行排序。

此函数适用于字符串(“Apple”将排在“Banana”之前)。

var fruits = ['Apple', 'Banana', 'Orange'];
var newFruits = fruits.push('Mago');
var paixu = fruits.sort();
console.log(paixu);    //['Apple', 'Banana', 'Mago', 'Orange']

但是,如果数字按字符串排序,“25”大于“100”,因为“2”大于“1”。

因此,sort() 方法在对值进行排序时会产生不正确的结果。

 var num1 = [1, 2, 5, 35, 10];
 var paixu1 = num1.sort();
 console.log(paixu1);   //[1, 10, 2, 35, 5]

解决方法:使用比率函数解决此问题

  //升序排序
        num1.sort(function (a, b) {
            return a - b;
        })
        console.log(num1);      //[1, 2, 5, 10, 35]

11.concat() 方法用于组合两个或多个数组。该方法不会改变现有数组,而是返回一个新数组。

  var array1 = ['a', 'b', 'c'];
  var array2 = ['d', 'e', 'f'];
  var array3 = array1.concat(array2);
  console.log(array3);    //['a', 'b', 'c', 'd', 'e', 'f']

12.slice() 方法,从数组的切片中切出一个新数组。

返回一个新数组对象,它是由 begin 和 end 确定的原始数组的浅表副本(包括 begin,但不包括 end)。原数组不会改变

   var animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
   console.log(animals.slice(2));    //['camel', 'duck', 'elephant']
   console.log(animals.slice(2, 4));    //['camel', 'duck']

13.reduce()接受一个回调函数作为参数,回调函数参数(prev, next, index, currenArr)

1.perv 表示回调最后一次调用时的返回值,或者初始值init。

2.next 表示当前正在处理的数组元素。

3.index 表示当前执行元素的索引。

4.currentArr 表示当前循环的数组元素

let arr=[1,2,3,4];
let reslut=arr.reduce((prev,next)=>{
    return prev+next
})
console.log(reslut)   //10

init初始值,相当于给数组的第一个位置加上一个默认值。

let arr=[1,2,3,4];
let reslut=arr.reduce((prev,next)=>{
    return prev+next
},10)
console.log(reslut)  //20

14.every():判断数组中的每一项是否满足条件js 数组操作类库,只有所有的项都满足条件才返回true。

var arr = [1, 2, 3, 4, 5];
var arr1 = arr.every(function(x) {
return x < 10;
}); 
console.log(arr1); //true
var arr2 = arr.every(function(x) {
return x < 3;
}); 
console.log(arr2); // false

15.some():判断数组中是否存在满足条件的项。只要有一项满足条件,就会返回true。

var arr = [1, 2, 3, 4, 5];
var arr2 = arr.some(function(x) {
return x < 3;
}); 
console.log(arr2); //true
var arr3 = arr.some(function(x) {
return x < 1;
}); 
console.log(arr3); // false

16.map():引用“map”,对数组中的每一项运行给定的函数,并返回每个函数调用结果的数组。

回调函数的语法如下:

函数回调函数(值、索引、数组);

回调函数的参数说明如下:

var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(function(item){
    return item*item;
});
console.log(arr2); //[1, 4, 9, 16, 25]

17.filter() 创建一个新数组,通过检查指定数组中所有满足条件的元素来检查新数组中的元素。

示例 1:查找大于 17 的元素

const array = [14, 17, 18, 32, 33, 16, 40];
const newArr = array.filter(num => num > 17)
console.log(newArr);//打印 [18,32,33,40]

示例 2:删除数组中大于 20 的数字

    var numbers = [25, 45, 5, 15];
        function filter(arr) {
            var arr1 = [];
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] < 20) {
                    // arr1[arr1.length] = arr[i];
                    // 数组尾部追加元素
                    arr1.push(arr[i]);
                }
            }
            return arr1;
        }
        console.log(filter(numbers));  //[5, 15]

18.数组去重

代码逻辑:

[‘a’,’b’,’c’,’a’,’b’]

© 版权声明
THE END
喜欢就支持一下吧
点赞48赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容