面试前后所有数组相关方法的总结,希望对你有所帮助。
目录
一、什么是数组?
数组是一种特殊类型的变量,一次可以保存多个值。
如果您有一个项目列表(例如,汽车品牌列表),将汽车品牌存储在单个变量中将如下所示:
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’]
暂无评论内容