javaScript的数组

js数组不是典型数组,本质上新建一个对象,用key和value去模拟的[数组下标就是key,数组存的值就是value]
学习文档:https://www.runoob.com/jsref/jsref-obj-array.html

创建数组

let arr = [1, 2, 3] 
let arr = new Array(1, 2, 3) //新建数组,元素为1,2,3 
let arr = new Array(3) //新建数组,长度为3

api转换成数组

let arr = '123'.split('')

Array对象

Array 对象用于在变量中存储多个值:可以是字符串、数字、对象、数组等。不要求数据类型统一。 第一个数组元素的索引值为 0,第二个索引值为 1,以此类推。

数组属性

length:设置或返回数组元素的个数。
prototype:允许你向数组对象添加属性或方法。用法和Date对象中的该属性一样。

Array对象方法

concat()

连接两个或更多的数组,并返回结果(一个新数组,原来的数组不变)。

let str1 = ["Kaico", "帅"];
let str2 = ["气", "吗"];
let str3 = str1.concat(str2)
console.log(`输出:` + str3) //输出:输出:Kaico,帅,气,吗

entries()

返回数组的可迭代对象。相当于Java中的迭代器。

let str1 = ["Kaico", "帅"];
let str2 = ["气", "吗"];
let str3 = str1.concat(str2)
for (const entry of str3.entries()) {
//entry是一个只有两个元素的数组,第一个元素是下标,第二个元素是被迭代数组的值
console.log(`输出:` + entry)
};

/*输出:
输出:0,Kaico
输出:1,帅
输出:2,气
输出:3,吗
 */

every()

检测数值元素的每个元素是否都符合条件。传入一个参数【返回布尔值的函数】,全部复合条件的话返回true,反之,有一个不符合级返回false。

var ages = [32, 33, 16, 40];
function checkAdult(age) {
	return age >= 18;
}
console.log(ages.every(checkAdult)); //输出:false

fill()

使用一个固定值来填充数组。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("apple");
console.log(fruits); //输出:["apple", "apple", "apple", "apple"]

filter()

检测数值元素,并返回符合条件所有元素的数组。传入一个参数【返回布尔值的函数】,返回true的话数组元素就返回到新数组中。

var ages = [32, 33, 16, 40];
var newAges = ages.filter(age => {
	return age >= 18;
});

console.log(newAges); //输出:[32, 33, 40]

find()

返回符合传入测试(函数)条件的第一个数组元素。传入一个参数【返回布尔值的函数】

var ages = [32, 33, 16, 40];
var newAge = ages.find(age => {
	return age >= 18;
});

console.log(newAge); //输出:32

findIndex()

返回符合传入测试(函数)条件的第一个数组元素索引。传入一个参数【返回布尔值的函数】


var ages = [32, 33, 16, 40];
var newAge = ages.findIndex(age => {

	return age >= 18;

});

console.log(newAge);//输出:0

forEach()

数组每个元素都执行一次回调函数。该方法用于调用数组的每个元素,并将元素传递给回调函数。对于空数组是不会执行回调函数的。

/*
age  必需。当前元素
index      可选。当前元素的索引值。
arr   可选。当前元素所属的数组对象。
 */
var ages = [32, 33, 16, 40];
ages.forEach((age, index, arr) => {

	console.log('索引:' + index + "age:" + age);

});

/*
输出:
索引:0age:32
索引:1age:33
索引:2age:16
索引:3age:40
 */

includes()

判断一个数组是否包含一个指定的值。

let str1 = ["Kaico", "帅"];
console.log(str1.includes("帅")) //输出:true

indexOf()

搜索数组中的元素,并返回它所在的位置(下标)。

let str1 = ["Kaico", "帅"];
console.log(str1.indexOf("帅")) //输出:1

join()

把数组的所有元素放入一个字符串。并可以指定分隔符。

let str1 = ["Kaico", "帅"];
console.log(str1.join("#")) //输出:Kaico#帅

keys()

返回数组的可迭代对象,包含原始数组的键(key)。


let str1 = ["Kaico", "帅"];
for (const key of str1.keys()) {

	console.log(key)

}

/*

输出:
0
1
 */

lastIndexOf()

搜索数组中的元素,并返回它最后出现的位置。

let str1 = ["Kaico", "帅"];
console.log(str1.lastIndexOf("帅")) //输出:1

map()

通过指定函数处理数组的每个元素,并返回处理后的数组。
用法和forEach()一样,唯一不同的是会返回处理后的数组。map()的参数【函数有返回值】

let str1 = ["Kaico", "帅"];
let str2 = str1.map((str,index,strs)=>{
	return str + str;
})

console.log(str2) //输出:["KaicoKaico", "帅帅"]

pop()和push()

pop():删除数组的最后一个元素并返回删除的元素。

push():向数组的末尾添加一个或更多元素,并返回新的长度。


let str1 = ["Kaico", "帅"];

let delete1 = str1.pop();//删除最后一个元素并返回该元素

str1.push("气");

console.log(str1) //输出:["Kaico", "气"]

reverse()

反转数组的元素顺序。

shift()和unshift()

shift():删除并返回数组的第一个元素。

unshift(): 向数组的开头添加一个或更多元素,并返回新的长度。

slice()

选取数组的一部分,并返回一个新数组。


var nums = ["1", "2", "3", "4", "5"];

var newNUms = nums.slice(1,3); //截取下标为1 到下标为 3(不包括3) 的元素

console.log(newNUms) //输出:["2", "3"]

some()

用于检测数组中的元素是否满足指定条件(函数提供)。


var ages = [3, 10, 18, 20];

let result = ages.some(age=>{

return age >= 18;

});

console.log(result) //输出:true

sort()

数组排序,默认升序。汉字排序不清楚规则。

使用数字排序时,需要指定一个函数作为参数。


var points = [40,100,1,5,25,10];

points.sort(function(a,b){return b-a}); //降序排序

console.log(points) //[100, 40, 25, 10, 5, 1]

points.sort(function(a,b){return a-b});//升序排序

console.log(points) //[1, 5, 10, 25, 40, 100]

字母排序,默认升序,按照26个字母顺序排序。降序的话可以使用数组反转的api。


var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.sort();

console.log(fruits) //输出:["Apple", "Banana", "Mango", "Orange"]

fruits.reverse();

console.log(fruits)//输出:["Orange", "Mango", "Banana", "Apple"]

splice()

用于添加或删除数组中的元素。这种方法会改变原始数组。

语法:array.splice(index,howmany,item1,…,itemX)

  • index 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。

  • howmany 可选。规定应该删除多少元素。必须是数字,但可以是 “0”。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。

  • item1, …, itemX 可选。要添加到数组的新元素

返回值:如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。


var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.splice(2,1,"Lemon","Kiwi"); //从下标为 2 的元素开始,删除 1 个元素(从下标为 2开始删除包括2),然后下标 2的位置添加"Lemon","Kiwi" 两个元素

console.log(fruits) //输出:["Banana", "Orange", "Lemon", "Kiwi", "Mango"]

fruits.splice(2,2) //删除元素//从下标为 2 的元素开始删除,删除 2 个元素(从下标为 2开始删除包括2)

console.log(fruits) //输出:["Banana", "Orange", "Mango"]

总结

数组的使用总结

  1. 从数组中查找符合条件的元素:filter()

  2. 多个数组合并:concat()

  3. 数组添加元素:push()、unshift()

  4. 数组删除元素:shift()、pop()

  5. 判断数组中是否含有指定元素:includes()、indexOf()、lastIndexOf()

  6. 判断数组中是否含有指定条件的元素:find()、findIndex()、some()

  7. 数组遍历:forEach()、keys()、map()、entries()

  8. 数组排序:sort()、reverse()

  9. 数组指定位置添加/删除元素:splice()

你可能感兴趣的:(javaScript,javascript)