JS 数组

作者: cy_Wey | 来源:发表于2022-07-13 22:39 被阅读0次

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

JS 数组的定义

let arr = [1, 2, 3]
let arr = new Array(1, 2, 3)

通过字符串定义数组

let arr = '1, 2, 3'.split(',')
let arr = '123'.split('')
Array.from('123') // 将可能是数组的东西转换成数组。

伪数组

// 这样子拿到的数组是伪数组,没有数组的共用属性。
let divList = document.querySelectorAll('div') 
Array.from('divList') // 将伪数组转换成数组。

数组的合并

将多个数组合成一个数组
arr.concat(arr1, arr2, arr3) // 将 arr, arr1, arr2, arr3 四个数组合并成一个数组

截取数组

arr.slice(startIndex, endIndex) // startIndex 不写默认为 0。
arr.slice(0) // 全部截取,用来复制数组。

数组的增删改查

删除数组

// 删除的元素会变成 empty ,数组长度不变,会变为稀疏数组,不推荐使用。
delect arr[index] 

不要随便修改数组的 length.

arr.shift () 删除第一个元素
arr.pop () 删除最后一个元素
arr.splice (startIndex, delectNum) 删除中间的元素
arr.splice (startIndex, delectNum, x, y) 删除后添加

查看数组

通过对象的方法查看数组

// 不推荐
Object.keys (arr)
Object.values (arr)
for (let i in arr) {
  console.log(i)
}

通过 for 循环遍历数组

for (let i = 0; i < arr.length; i++) {
  console.log(`${i}: ${arr[i]}`) // 打印出数组的索引  index, 和对应的项 item。
}

通过 forEach 函数遍历数组

// 注意 function (item, index)  中的顺序不能调换。
arr.forEach (function (item, index) {
  console.log(`${index}: ${item}`) //  // 打印出数组的索引  index, 和对应的项 item。
})

查看数组的单个属性
arr[index]

  • 注意 index 不能超过数组的长度,或者为负数
arr[arr.length] = undefined
arr[-1] = undefined

查看某个元素是否在数组中

arr.indexOf (item)
// 如果数组存在,返回对应元素第 1 次出现的索引,不存在返回 -1。

查找满足条件的元素

arr.find (item => item % 2 === 0))  // 找出数组中第一个出现的偶数
arr.findIndex((item => item % 2 === 0)  // 找出数组中第一个出现的偶数的索引
arr.findLast (item => item % 2 === 0))  // 找出数组中最后一个出现的偶数
arr.findLastIndex((item => item % 2 === 0)  // 找出数组中最后一个出现的偶数的索引

增加元素

arr.push (item) 在尾部增加

arr.unshift (item) 在头部增加

arr.splice (index, 0, item) 在中间增加

可同时增加多个元素。

修改元素

arr[index] = item
arr.splice (index, 1, item)

数组反转

arr.resverse ()

数组排序

arr.sort() // 默认正序

// 逆序排序,顺序排序 1 和 -1 调换位置。
arr.sort (function (a, b) {
  if (a > b) {
    return -1
  } else if (a === b) {
    return 0
  } else {
    return 1
  }
})

数组变换

map 数组映射,n 变 n。
filter 数组过滤,n 变少。
reduce 数组求和,n 变 1。

map 示例

// 将 0 ~ 6, 转换成周日到周六。
let arr = [0, 1, 2, 4, 5, 2, 2, 3, 6, 6]
let arr2 = arr.map ((i) => {
  const hash = {0: '周日', 1: '周一', 2: '周二', 3:'周三', 4: '周四', 5:'周五', 6:'周六'}
  return hash[i]
})
console.log(arr2)

filter 示例

// 找出所有大于 60 分的成绩。
let scores = [95, 91, 59, 55, 42, 82, 72, 85, 67, 66, 55, 91]
let scores2 = scores.filter (scores => scores > 60)
console.log(scores2) //  [95,91,82,72,85,67,66, 91]

reduce 示例

// 算出所有奇数之和。
let scores = [95, 91, 59, 55, 42, 82, 72, 85, 67, 66, 55, 91]
let sum = scores.reduce((sum, n)=>{
  return n % 2===0?sum:sum+n
},0)
console.log(sum) // 奇数之和:598 

资料来源:饥人谷

相关文章

  • 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/rxnabrtx.html