- 要点
- 方法
- Array.isArray()【判断对象是否为数组】
- 数组的头尾操作
- Array.splice()【在指定位置添加或删除数组中的元素】
- Array.slice()【从已有的数组中返回选定的元素】
- ———————————————————————
- Array.join()和String.split()【数组和字符串的互转】
- Array.concat()【连接两个或多个数组】
- Array.reverse()【颠倒数组中元素的顺序】
- ———————————————————————
- Array.indexOf()【搜索数组中的元素,并返回它所在的位置】
- Array.includes()【判断一个数组是否包含一个指定的值】
- ———————————————————————
- Array.sort()【对数组的元素进行排序】
- ES6新增
要点
数组类型的检测
方法
Array.isArray()【判断对象是否为数组】
参数 | 描述 |
---|---|
obj | 必需,要判断的对象。 |
Array.isArray(obj)
如果obj是数组,则返回true,反之为false。
数组的头尾操作
Array.push()【尾部添加一个元素或更多,并返回新的长度】
参数 | 描述 |
---|---|
item1, item2, …, itemX | 必需。要添加到数组的元素。 |
Array.push(item1, item2, …, itemX)
演示:
简化代码
<body>
<p id="demo">单击按钮给数组添加新的元素。</p>
<button onclick="myFunction()">点我</button>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction(){
fruits.push("Kiwi")
var x=document.getElementById("demo");
x.innerHTML=fruits;
}
</script>
</body>
返回值
类型 | 描述 |
---|---|
Number | 数组新长度 |
Array.unshift()【为头部添加】
Array.pop()【删除尾部最后一个元素,并返回删除的元素。】
无需参数
返回值
类型 | 描述 |
---|---|
所有类型 | 返回删除的元素。 |
演示:
简化代码
<body>
<p id="demo">单击按钮删除数组的最后一个元素。</p>
<button onclick="myFunction()">点我</button>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction(){
fruits.pop();
var x=document.getElementById("demo");
x.innerHTML=fruits;
}
</script>
</body>
Array.shift()【删除头部】
Array.splice()【在指定位置添加或删除数组中的元素】
Array.splice(index,howmany,item1,…..,itemX)
参数 | 描述 |
---|---|
index | 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 |
howmany | 可选。规定应该删除多少元素。必须是数字,但可以是 “0”。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 |
item1, …, itemX | 可选。要添加到数组的新元素 |
返回值
Type(类型) | 描述 |
---|---|
Array | 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。 |
指定位置替换
指定位置插入
指定位置删除
Array.slice()【从已有的数组中返回选定的元素】
Array.slice(start, end)
参数 | 描述 |
---|---|
start | 可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。 |
返回值
Type | 描述 |
---|---|
Array | 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 |
———————————————————————
Array.join()和String.split()【数组和字符串的互转】
Array.join(separator)
参数 | 描述 |
---|---|
separator | 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 |
返回值
类型 | 描述 |
---|---|
String | 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。 |
如:
Array.concat()【连接两个或多个数组】
Array1.concat(array2,array3,…,arrayX)
参数 | 描述 |
---|---|
array2, array3, …, arrayX | 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 |
返回值
Type(类型) | 描述 |
---|---|
Array 对象 | 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。 |
Array.reverse()【颠倒数组中元素的顺序】
———————————————————————
Array.indexOf()【搜索数组中的元素,并返回它所在的位置】
Array.indexOf(item,start)
参数 | 描述 |
---|---|
item | 必须。查找的元素。 |
start | 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
返回值
类型 | 描述 |
---|---|
Number | 元素在数组中的位置,如果没有搜索到则返回 -1。 |
指定从第几个下标位开始检索。列如从下标4开始
Array.includes()【判断一个数组是否包含一个指定的值】
Array.includes(searchElement)
Array.includes(searchElement, fromIndex)
参数 | 描述 |
---|---|
searchElement | 必须。需要查找的元素值。 |
fromIndex | 可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。 |
返回值: | 布尔值。如果找到指定值返回 true,否则返回 false。 |
---|---|
fromIndex 大于等于数组长度
如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索:
计算出的索引小于 0
如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
列如我们定义var arr = ['a', 'b', 'c'];
// 数组长度是3 |
---|
// fromIndex 是 -100 |
// computed index 是 3 + (-100) = -97 |
所以:
———————————————————————
Array.sort()【对数组的元素进行排序】
sort() 方法用于对数组的元素进行排序。
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。
Array.sort(sortfunction)
参数 | 描述 |
---|---|
sortfunction | 可选。规定排序顺序。必须是函数。 |
返回值
Type | 描述 |
---|---|
Array | 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。 |
也可写作这样的形式,更简洁
简化代码
<body>
<script>
var arr = [33,22,11,55];
arr.sort(function(a,b){
return a-b; // 从小到大a-b,从大到小b-a
})
console.log(arr);
</script>
</body>
ES6新增
includes()【判断一个数组是否包含一个指定的值】
语法
arr.includes(searchElement)
arr.includes(searchElement, fromIndex)
参数 | 描述 |
---|---|
searchElement | 必须。需要查找的元素值。 |
fromIndex | 可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。 |
Type | 描述 |
---|---|
Boolean | 如果找到指定值返回 true,否则返回 false。 |
例:
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
fromIndex 大于等于数组长度
如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索:
var arr = ['a', 'b', 'c'];
arr.includes('c', 3); //false
arr.includes('c', 100); // false
计算出的索引小于 0
如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
// 数组长度是3
// fromIndex 是 -100
// computed index 是 3 + (-100) = -97
var arr = ['a', 'b', 'c'];
arr.includes('a', -100); // true
arr.includes('b', -100); // true
arr.includes('c', -100); // true
from()【将其他数据类型转换为数组】
可用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组。
语法Array.from(object, mapFunction, thisValue)
参数 | 描述 |
---|---|
object | 必需,要转换为数组的对象。 |
mapFunction | 可选,数组中每个元素要调用的函数。 |
thisValue | 可选,映射函数(mapFunction)中的 this 对象。 |
返回值:一个新的数组
例:
从string生成数组
Array.from('foo');
// [ "f", "o", "o" ]
从Set生成数组
const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
// [ "foo", "bar", "baz" ]
从Map生成数组
const map = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(map);
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
// ['a', 'b'];
Array.from(mapper.keys());
// ['1', '2'];
从类数组对象生成数组
function f() {
return Array.from(arguments);
}
f(1, 2, 3);
// [ 1, 2, 3 ]
找值或索引
find()【找值】
语法_arr_.find(_callback_[, _thisArg_])
参数 | 描述 |
---|---|
callback | 在数组每一项上执行的函数,接收 3 个参数:1.element 当前遍历到的元素。 2.index(可选) 当前遍历到的索引。 3.array(可选) 数组本身。 |
thisArg(可选) | 执行回调时用作this 的对象 |
返回值
数组中第一个满足所提供测试函数的元素的值,否则返回 undefined。
描述:
find方法对数组中的每一项元素执行一次 callback 函数,直至有一个 callback 返回 true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回 undefined。注意 callback 函数会为数组中的每个索引调用即从 0 到 length - 1,而不仅仅是那些被赋值的索引,这意味着对于稀疏数组来说,该方法的效率要低于那些只遍历有值的索引的方法。
callback函数带有3个参数:当前元素的值、当前元素的索引,以及数组本身。
如果提供了 thisArg参数,那么它将作为每次 callback函数执行时的this ,如果未提供,则使用 undefined。
find方法不会改变数组。
在第一次调用 callback函数时会确定元素的索引范围,因此在 find方法开始执行之后添加到数组的新元素将不会被 callback函数访问到。如果数组中一个尚未被callback函数访问到的元素的值被callback函数所改变,那么当callback函数访问到它时,它的值是将是根据它在数组中的索引所访问到的当前值。被删除的元素仍旧会被访问到,但是其值已经是undefined了。
例:
const array1 = [5, 12, 8, 130, 44];
const found = array1.find(element => element > 10);
console.log(found);
// expected output: 12
用对象的属性查找数组里的对象
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
function findCherries(fruit) {
return fruit.name === 'cherries';
}
console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }
findindex()就是返回索引了