探究JavaScript Array对象
转载请标明出处:http://blog.csdn.net/donkor_/article/details/124859100
前言
在JavaScript开发中,JavaScript对象包含Array对象,Boolean对象,Date对象,Math对象,Number对象,String对象,RegExp对象,全局属性与函数,运算符,Error。Array对象在开发过程中比较常用。以下将针对该对象进行讲解分析。
Array对象
Array 对象用于在变量中存储多个值,
在存储的过程中,数据类型可以不同。
当然第一个数组元素的索引值为 0,第二个索引值为 1,以此类推。
例:var cars = ["aa", "bb", "cc"];
例:var cars = ["aa", "bb", 1];
例:var cars = ["aa", true, 1];
数组属性
属性 | 描述 |
---|---|
constructor | 返回创建数组对象的原型函数 |
length | 设置或返回数据元素的个数 |
prototype | 允许你向数组对象添加属性或方法 |
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() | 返回数组对象的原始值。 |
forEach与map的区别
相同点
- 都是循环遍历数组中的每一项
- 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
- 匿名函数中的this都是指向window
- 只能遍历数组
不同点
- map()会分配内存空间存储新数组并返回,forEach()不会返回数据
- forEach()允许callback更改原始数组的元素。map()返回新的数组
forEach()使用场景
并不打算改变数据的时候,而只是想用数据做一些事情 ,比如存入数据库或则打印出来
var arr = [0,2,4,6,8];
var newArr = arr1.forEach(function(item,index,arr1){
arr[index] = item/2;
},this);
document.write(arr);
document.write(newArr);
输出结果
0,1,2,3,4
undefined
map()使用场景
适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组
var arr = [0,2,4,6,8];
var newArr = arr.map(function(item,index,arr){
return item/2;
},this);
document.write(arr);
document.write(newArr);
输出结果
0,2,4,6,8
0,1,2,3,4
find与filter区别
find 查找出第一个符合条件的对象,并返回这个对象
filter 筛选出所有符合条件的对象,并将这些对象输出为一个数组
let arr = [
{
name: '张三',
age: 15
},
{
name: '李四',
age: 16
},
{
name: '王五',
age: 18
}
]
let findResult = arr.find(i => i.name === '王五')
let filterResult = arr.filter(i => i.name === '王五')
console.log(arr);
console.log(findResult);
console.log(filterResult);
输出结果
[
{ name: '张三', age: 15 },
{ name: '李四', age: 16 },
{ name: '王五', age: 18 }
]
{ name: '王五', age: 18 }
[ { name: '王五', age: 18 } ]
值得一提的事,当find未能查到到符合的对象时,返回undefined。当filter未能查到到符合的对象时,返回【】。