1、Array 对象
Array 对象用于在变量中存储多个值:
var cars = ["Saab", "Volvo", "BMW"];
1.1、数组属性
- constructor 返回创建数组对象的原型函数。
- length 设置或返回数组元素的个数。
- prototype 允许你向数组对象添加属性或方法。
1.2、Array 对象方法
concat()
concat()
方法用于连接两个或多个数组。
- 语法
array1.concat(array2,array3,...,arrayX)
- 参数array2, array3, …, arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
- 返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
eg:合并三个数组的值:
var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];console.log(children);
var children = hege.concat(stale,kai);
console.log(children);
//Cecilie,Lone,Emil,Tobias,Linus,Robin
copyWithin()
从数组的指定位置拷贝元素到数组的另一个指定位置中。
- 语法:
array.copyWithin(target, start, end)
- 参数:target 必需。复制到指定目标索引位置。start可选。元素复制的起始位置。 end 可选。停止复制的索引位置(默认为 array.length)。如果为负值,表示倒数。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.copyWithin(2, 0);
console.log(fruits);
//Banana,Orange,Banana,Orange
entries()
返回数组的可迭代对象。
- 语法
array.entries()
entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。
迭代对象中数组的索引值作为 key, 数组元素作为 value。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.entries();
console.log(x.next().value);
//[0, "Banana"]
//[1, "Orange"]
//[2, "Apple"]
//[3, "Mango"]
every()
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
array.every(function(currentValue,index,arr), thisValue)
- 参数
1.函数, 必须。数组中的每个元素都会执行这个函数
2.currentValue 必须。当前元素的值
3.index 可选。当前元素的索引值
4.arr 可选。当前元素属于的数组对象
5.thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,“this” 的值为 “undefined” - every() 方法使用指定函数检测数组中的所有元素
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
- every() 不会对空数组进行检测。
- every() 不会改变原始数组。
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
cosnole.log(ages.every(checkAdult));
//false
fill()
使用一个固定值来填充数组。
array.fill(value, start, end)
- 参数
1.value 必需。填充的值。
2.start 可选。开始填充位置。
3.end 可选。停止填充位置 (默认为 array.length)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Runoob");
console.log(fruits);
//Runoob,Runoob,Runoob,Runoob
filter()
检测数值元素,并返回符合条件所有元素的数组。
array.filter(function(currentValue,index,arr), thisValue)
- 参数
- 函数,必须。数组中的每个元素都会执行这个函数
- currentValue 必须。当前元素的值
- index 可选。当前元素的索引值 arr 可选。当前元素属于的数组对象
- thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 如果省略了 thisValue ,"this"的值为 “undefined”
- filter() 不会对空数组进行检测。
- filter() 不会改变原始数组。
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
console.log( ages.filter(checkAdult));
find()
返回符合传入测试(函数)条件的数组元素。
findIndex()
返回符合传入测试(函数)条件的数组元素索引。
forEach()
数组每个元素都执行一次回调函数。
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
array.forEach(function(currentValue, index, arr), thisValue)
eg:
计算数组所有元素相加的总和:
<button onclick="numbers.forEach(myFunction)">点我</button>
<p>数组元素总和:<span id="demo"></span></p>
<script>
var sum = 0;
var numbers = [65, 44, 12, 4];
function myFunction(item) {
sum += item;
demo.innerHTML = sum;
}
</script>
forEach 并不改变原数组
var arr = [1, 2, 3, 4, 5];
var a=arr.forEach(function(value,index,arr){
value=value+7
console.log(value+" "+index+" "+arr)
},3)
console.log(a)
console.log(arr.toString())
数组每个元素都执行一次回调函数。
from()
通过给定的对象中创建一个数组。
includes()
判断一个数组是否包含一个指定的值。
indexOf()
搜索数组中的元素,并返回它所在的位置。
isArray()
判断对象是否为数组。
join()
把数组的所有元素放入一个字符串。
keys()
返回数组的可迭代对象,包含原始数组的键(key)。
lastIndexOf()
搜索数组中的元素,并返回它最后出现的位置。
map()
通过指定函数处理数组的每个元素,并返回处理后的数组。
pop()
删除数组的最后一个元素并返回删除的元素。
push()
向数组的末尾添加一个或更多元素,并返回新的长度。
reduce()
将数组元素计算为一个值(从左到右)。
reduceRight()
将数组元素计算为一个值(从右到左)。
reverse()
反转数组的元素顺序。
shift()
删除并返回数组的第一个元素。
slice()
选取数组的一部分,并返回一个新数组。
some()
检测数组元素中是否有元素符合指定条件。
sort()
对数组的元素进行排序。
splice()
从数组中添加或删除元素。
toString()
把数组转换为字符串,并返回结果。
unshift()
向数组的开头添加一个或更多元素,并返回新的长度。
valueOf()
返回数组对象的原始值。