JS数组

作者: zhenghongmo | 来源:发表于2020-03-12 14:38 被阅读0次

Array用法

基本用法

  1. Array(3)//{length:3} ,3表示length
  1. Array(3,3) // [3,3] ,第一个3并不表示length了
  1. 构造函数
  • 基本类型==>Number、String、Boolean
    • 不加new,返回基本类型
    • 加new,返回对象
  • 复杂类型==>Array、Function
    • 不加new,返回对象
    • 加new,也返回对象

Js中数组的本质

  • 人类理解:数组就是数据的有序集合
  • JS理解:数组就是原型链中有 Array.prototype 的对象
  • 伪数组
    • 有 0,1,2,3,4,5...n,length 这些 key 的对象
    • 原型链中没有 Array.prototype
    • 目前知道的伪数组有:

      arguments 对象

      document.querySelectAll('div') 返回的对象

数组的API

  1. Array.prototype.forEach

forEach() 方法对数组的每个元素执行一次提供的函数。返回值为undefined

forEach()参数必须为一个函数

函数必须有三个参数,一个为数组当前项的值(value),一个为数组当前项的索引(key),一个为数组对象本身

  • for...of可以遍历数组,得到value
  1. Array.prototype.sort

sort() 方法对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。

<font color="red">sort()是这几个方法中唯一会改变原数组的方法</font>

sort()有一个函数作为参数,这是用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。

  1. Array.prototype.join

join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。

  1. Array.prototype.concat

concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组.

  1. Array.prototype.toString

toString() 返回一个字符串,表示指定的数组及其元素。Array对象覆盖了Object的 toString 方法。对于数组对象,toString 方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素。

  1. Array.prototype.map

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果

  1. Array.prototype.filter

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

  1. Array.prototype.reduce

reduce() 方法对累计器和数组中的每个元素(从左到右)应用一个函数,将其简化为单个值。

  1. Array.prototype.push/Array.prototype.unshift()
  • push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度
  • unshift()将一个或多个元素添加到数组的开头,并返回该数组的新长度。
  1. Array.prototype.pop/Array.prototype.shift()
  • pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
  • shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
  1. Array.prototype.includes()
  • 用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false
  • 第一个参数为需要查找的参数值,第二个参数(可选)表示从哪个位置开始查找,如果值为负数,则整个数组都会被搜索。
  1. Array.prototype.indexOf()
  • 返回在数组中可以找到一个给定元素的第一个索引,如果存在,返回这个元素所在的位置;如果不存在,则返回-1.
  • 相当于严格相等===去找是否存在某元素,例如两个对象值一样,但地址不一样,则不会被找到。
  1. Array.prototype.lastIndexOf()
  • 返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。
  1. Array.prototype.find()
  • 返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。返回的是找到的值
  1. Array.prototype.findIndex()
  • 返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。返回的是找到的值的位置。
  1. Array.prototype.some()
  • 判断数组里是否有任意一个元素满足回调,找到了一个就不再往下执行。
  1. Array.prototype.every()
  • 判断数组里是否所有元素都满足回调。
  1. Array.prototype.slice()
  • 截取数组的一部分,如下[2,3)
  1. Array.prototype.splice()
  • splice()方法通过删除现有元素和/或添加新元素来修改数组,返回被删除的内容。

合并两个数组

1、concat、for 循环、扩展运算法、Array.prototype.push.apply

  • cancat 不改变原数组。concat合并数组之后,返回值才是新数组,并且可以合并两个及其以上的数组
let temparr2 = temparr.concat([7,8])
console.log(temparr2)//[ 1, 2, 3, 4, 7, 8 ]
  • .push.apply合并数组是把后一个数组的值依次push进前一个数组,使前一个数组发生改变,并且只能两个数组之间发生合并。
arr1.push.apply(arr1,arr2)
console.log(arr1) //[ 1, 2, 3, 4, 4, 5, 6, 7 ]
  • push 添加到数组的末尾(可以push一个值或者一个数组) 改变原数组
let temparr = [1,2,3,4];
temparr.push([6,7])
console.log(temparr)//[ 1, 2, 3, 4, [ 6, 7 ] ]

合并两个对象

Object.assign、扩展运算法、手写深浅拷贝

  • Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
const o1 = { a: 1, b: 1, c: 1 };
const o2 = { b: 2, c: 2 };
const o3 = { c: 3 };

const obj = Object.assign( o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。

相关文章

  • js 数组链接concat,和数组转字符串join,字符串转数

    js 数组链接用concat js 数组转成字符串 js 字符串转数组

  • js数组题目

    js面试题 js数组 一、按要求分割数组 将"js,数组,分类"字符串数组以/分割 for循环累加 join()把...

  • js 数组

    js 中数组的长度发生改变,数组就真的发生改变,快速清空数组就让数组长度为0js 数组的方法

  • JS数组以及数组变换

    有关数组 数组对象——一种特殊的对象JS其实没有数组,只使用对象来模拟数组 典型数组和JS数组的区别 典型数组 元...

  • 数组检测

    检测是否是数组: 数组转字符串: 字符串转换数组: js对象转换成js字符串: js字符串转换成js对象:

  • 概念集合

    JS中的数组和Arrary的区别 js中的数组就是array对象

  • JS 数组

    JS 数组是一种特殊的对象,不是真正的数组,它只##是通过对象来模拟数组。 JS 数组的定义 let arr = ...

  • javaScript的数组

    js中没有数组类型 js 中数组是以内置对象的形式存在 数组定义01 var attr = new Array('...

  • 数组

    数组的定义: js:存储多个相同类型数据 ,有序的数据;php数组 1,:索引数组,同js;声明:$arrName...

  • js笔记

    js数组 删除某个元素 js数组是否含有某个元素 判断value为undefined cookie操作

网友评论

      本文标题:JS数组

      本文链接:https://www.haomeiwen.com/subject/asgujhtx.html