数组
数组的基础
Array的对象属性
constructor : 返回对创建此对象的数组函数的引用(Array)。
length: 设置或返回数组中元素的数目。
prototype : 使您有能力向对象添加属性和方法。
数组的方法
遍历数组
通过 for
循环来遍历数组
var arr = [1, 2, 3, 4, 5, 6]
var len = arr.length
for(var i = 0; i < len; i++) {
console.log(arr[i])
}
// 1 2 3 4 5 6
通过 forEach()
方法来遍历数组
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
arr.forEach()
遍历整个数组,对数组进行操作,但不返回值
let fruits = ['apple','orange','banna',]
fruits.forEach(function (item, index, array) {
console.log(item, index);
});
// apple 0
// orange 1
// banna 2
// 例子2
let arr = [1,2,3,4,5];
let res=0;
arr.forEach(item => {
item>=3?res++:res
});
console.log(res) // 3
// 例子3 和Object.key()的配合使用
//Object.keys() 方法返回一个对象的属性值组成的数组
let obj = {
name: 'liu',
age: 20
};
Object.keys(obj).forEach((value, index, arr) = > {
console.log("value is : %s, index is : %s, arr is : %s", value, index, arr)
})
//value is : name, index is : 0, arr is : Array(2)
//value is : age, index is : 1, arr is : Array(2)
通过 map()
方法来遍历数组
array.map(function(currentValue,index,arr), thisValue)
map,从字面上理解,是映射,即数组元素的映射。
它提供一个回调函数,参数依次为处于当前循环的元素、该元素下标、数组本身,三者均可选。
map 方法不改变原数组。
map方法会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
let arr = [1,2,3,4,5]
let arr1 = arr.map((item,index)=>{
return item*(index+1)
});
console.log(arr) //[1, 2, 3, 4, 5]
console.log(arr1) //[1, 4, 9, 16, 25]
通过 find()
和 findIndex()
方法来遍历数组
find()
和 findIndex()
方法返回通过测试(函数内判断)的数组的第一个元素的值(位置)。
find()
和 findIndex()
方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, find()
和 findIndex()
返回符合条件的元素(位置),之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
注意: find()
和 findIndex()
对于空数组,函数是不会执行的。
注意: find()
和 findIndex()
并没有改变数组的原始值。
var arr = [1, 2, 3, 4, 4, 5, ]
var ele = arr.find( (item, index) => {return item === 4})
var ind = arr.findIndex( item => {return item === 4})
console.log(ele ) // 4
console.log(ind ) // 3
通过 filter()
方法来遍历数组
array.filter(function(currentValue,index,arr), thisValue)
filter()
方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter()
不会对空数组进行检测。
注意: filter()
不会改变原始数组。
var arr = [1,2,3,4,5]
smallvalues = arr.filter(function(c) { return c<3}) //[1,2]
everyother = arr.filter(function(c,i) { return i%2==0}) //[1,3,5]
通过 every()
和some()
方法来遍历数组
every()
和some()
方法对数组依次进行逻辑判断,
every()
必须所有元素都满足条件,则返回 true
如果有一个元素不满足,则整个表达式返回 false
some()
只要有一个元素满足条件,则返回 true。
如果没有满足条件的元素,则返回 false。
注意: every()
和some()
不会对空数组进行检测。
注意: every()
和some()
不会改变原始数组。
var arr = [ 1, 2, 3, 4, 5, 6 ]
console.log( arr.some( ( item, index, array ) => {
console.log( 'item=' + item + ',index='+index+',array='+array)
return item > 3
}))
// 运行结果
// item=1,index=0,array=1,2,3,4,5,6
// item=2,index=1,array=1,2,3,4,5,6
// item=3,index=2,array=1,2,3,4,5,6
// item=4,index=3,array=1,2,3,4,5,6
// true
console.log( arr.every( ( item, index, array ) {
console.log( 'item=' + item + ',index='+index+',array='+array )
return item > 3;
}))
// 运行结果
// item=1,index=0,array=1,2,3,4,5,6
// false
数组的其他方法
splice()
方法
array.splice(index,howmany,item1,.....,itemX)
array.splice()
函数 直接 在原数组进行添加、删除、替换元素的操作。
array.splice()
返回值为 array 操作后的 元素组成的数组。
注意: 如果使用浅拷贝来操作拷贝的数组其会指向原数组
var fruits = ["Banana", "Orange", "Apple", "Mango"]
var fruits1 = fruits
fruits1.splice(2,0,"Lemon","Kiwi");
console.log(fruits) // Banana,Orange,Lemon,Kiwi,Apple,Mango
console.log(fruits1) // Banana,Orange,Lemon,Kiwi,Apple,Mango
slice()
方法
array.slice(start, end)
slice()
方法可从已有的数组中返回选定的元素。
slice()
方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice()
方法不会改变原始数组。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
console.log(fruits) //Banana,Orange,Lemon,Apple,Mango
console.log(citrus) //Orange,Lemon
push()
和unshift()
方法
向数组的 尾部/头部 添加 若干元素,并返回 数组的 新长度;
var arr = [1, 2];
arr.push(3,4); //返回 arr 的新长度 4
console.log(arr); // arr = [1,2,3,4];
arr.unshift(0,0.5); // 返回 arr 的新长度 6
console.log(arr) ; // arr = [0,0.5,1,2,3,4];
pop()
和shift()
方法
从数组的 尾部/头部 删除1个元素(删且只删除1个),并返回 被删除的元素;空数组是继续删除,不报错,但返回undefined
pop()
和 shift()
不接受传参
arr.pop(); // 返回 4;
console.log(arr); // arr = [0,0.5,1,2,3];
arr.pop(2); // 返回 3;
console.log(arr); // arr = [0,0.5,1,2];
arr.shift(); // 返回 0;
console.log(arr); // arr = [0.5,1,2]
Array.indexof()
找出某个元素在数组中的索引
var fruits = ["Strawberry", "Banana", "Mango"]
var pos = fruits.indexOf('Banana');
console.log(pos) // 1
Array 对象方法
方法 | 描述 |
---|---|
concat() | 连接两个或更多的数组,并返回结果。 |
copyWithin() | 从数组的指定位置拷贝元素到数组的另一个指定位置中。 |
entries() | 返回数组的可迭代对象。 |
every() | 检测数值元素的每个元素是否都符合条件。 |
fill() | 使用一个固定值来填充数组。 |
filter() | 检测数值元素,并返回符合条件所有元素的数组。 |
find() | 返回符合传入测试(函数)条件的数组元素。 |
findIndex() | 返回符合传入测试(函数)条件的数组元素索引。 |
forEach() | 数组每个元素都执行一次回调函数。 |
from() | 通过给定的对象中创建一个数组。 |
includes() | 判断一个数组是否包含一个指定的值。 |
indexOf() | 搜索数组中的元素,并返回它所在的位置。 |
isArray() | 判断对象是否为数组。 |
join() | 把数组的所有元素放入一个字符串。 |
keys() | 返回数组的可迭代对象,包含原始数组的键(key)。 |
lastIndexOf() | 搜索数组中的元素,并返回它最后出现的位置。 |
map() | 通过指定函数处理数组的每个元素,并返回处理后的数组。 |
pop() | 删除数组的最后一个元素并返回删除的元素。 |
push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
reduce() | 将数组元素计算为一个值(从左到右)。 |
reduceRight() | 将数组元素计算为一个值(从右到左)。 |
reverse() | 反转数组的元素顺序。 |
shift() | 删除并返回数组的第一个元素。 |
slice() | 选取数组的一部分,并返回一个新数组。 |
some() | 检测数组元素中是否有元素符合指定条件。 |
sort() | 对数组的元素进行排序。 |
splice() | 从数组中添加或删除元素。 |
toString() | 把数组转换为字符串,并返回结果。 |
unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
valueOf() | 返回数组对象的原始值。 |