探究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未能查到到符合的对象时,返回【】。