JavaScript【三】JavaScript中的数组

简介: JavaScript【三】JavaScript中的数组

🌟前言

哈喽小伙伴们,本文将收录在JavaScript【前端童子功】这个专栏里;这个专栏里边会收录一些JavaScript的基础知识和项目实战;希望大家可以多多支持,你们的支持就是我创作的动力;让我们一起来看看吧🤘

🌟数组

用来存储一组或一系列相关数据的容器。

🌟声明:

🌟 隐式创建:

var arr=[];
arr[0]="a",arr[1]="b",arr[2]="c"
var arr=[a,b,c];

🌟 实例化构造函数:

var arr=new Array(3//指长度);
arr[0]=1;arr[1]=2;arr[2]=3;
var arr=new Array(1,2,3);

🌟 注意:一个值为数组的长度。

var arr=new Array(5);
//利用实例化构造函数的方式创建数组,只传一个值,表示数组长度。

🌟 访问:

  • 下标范围:0~数组长度减一 0-arr.length-1
  • 通过下标访问数组元素 arr[0]arr[arr.length-1]
  • 数组长度:arr.length
  • 数组中可以存储任意数据类型的数据
  • 数组可以允许越界访问(可以访问超出下标的数据,结果为undefined)

🌟 遍历:

循环访问数组中的每一个元素。

  • for循环
  for(var i=0;i=arr.length;i++){
      arr{i}
  }
  • for in
for(var i in arr){
    i;//下标
    arr[i];//元素
}
  • for of
for(var i of arr){
    i;//元素
}

🌟二维数组:

一维数组中的每一个元素都是一个数组,叫做二维数组。

🌟 声明:

var arr[[1,2],[2,3],[3,4,5]]

🌟访问:

  • 长度:按照一维数组的长度计算,arr.length
  • 通过双重下标访问:arr[i][j]

🌟遍历:

for(var i=0;i<arr.lenght;i++){
    for(var j=0;j<arr[i].length;j++)
        arr[i][j];
}

🌟数组的属性和方法:

🌟属性

  1. length: 数组中元素的个数
  2. constructor: 返回对创建此对象的数组函数的引用(可以用来判断变量是否为数组)

🌟方法

🌟arr.push(); 向数组的末尾追加元素

  • 会修改原数组
  • 返回值:修改后的length值
  • 可以追加多个
arr[1,2,3];
arr1[4,5,6];
arr2[...arr,...arr1];       //  ...扩展运算符,将数组展开

🌟arr.unshift(); 向数组的开头添加函数

  • 会修改原数组
  • 返回值:修改后的length值
  • 可以追加多个

🌟arr.pop(); 删除末尾的元素

  • 会修改原数组
  • 返回值:被删除的数据
  • 只能删除一个

🌟arr.shift(); 开头删除一个元素

  • 会修改原数组
  • 返回值:被删除的数据
  • 只能删除一个

🌟arr.splice (位置,删除元素的个数,要追加的元素); 任意位置添加删除

  • 添加或者删除包含对应下标
  • 添加数据时:删除元素的个数写0;
  • 可以同时删除和添加(先删除,后添加)
  • 修改原数组

🌟arr.join(“分隔符”) 使用分隔符将数组数据隔开变为字符串

  • 不修改原数组
  • 返回值是分隔好的字符串

🌟arr.slice(截取的起始下标,结束下标) 数组的截取

  • 截取时,包含起始下标,不包含结束下标
  • 不修改原数组
  • 返回值是截取到的数组
  • 参数可以是负数,负数表示倒数,只传一个参数表示从起始下标截取到最后

🌟arr.concat 多个数组的连接

  • 不修改原数组
  • 返回值是连接之后的新数组
var arr1=[1,2,3];
var arr2=[4,5,6];
console.log(arr1.concat(arr2,[7,8,9]));
// 控制台输出
// (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
Array.prototype.push.apply(a,b)   //b为push参数

🌟arr.indexOf(值); 查找某个值在数组中第一次出现的下标

  • 返回值是数据的下标,没有找到则返回-1
var arr=[1,5,6,99,52,663,22,66,552,123,6,622];
console.log(arr.indexOf(22));    //查找22在arr数组中的位置
// 控制台输出
// 6

🌟arr.lastIndexOf(值); 倒叙查找某个值在数组中第一次出现的位置

🌟arr.sort(回调函数) 数组的排序

  • 如果没有参数,则从字符的编码开始按顺序排
  • 如果有参数,这个参数必须是一个函数(回调函数)这个回调函数有两个参数,分别是a,b
  • 修改原数组
  • 返回值是排序之后的数组
      var arr3=[1,5,6,99,52,663,22,66,552,6,622];
      arr3.sort(function(a,b){
      //a-b 正序,
      //b-a 倒序,  
      return a-b;
      })
      console.log(arr3);
      // 控制台输出
      // (11) [1, 5, 6, 6, 22, 52, 66, 99, 552, 622, 663]
      //箭头函数
      arr.sort((a,b)=>a-b)     //正序,
      arr.sort((a,b)=>b-a)     //倒序,

🌟arr.forEach(回调函数) 遍历数组

  • 接收一个回调函数,回调函数第一个参数是 数组值
  • 第二个参数是 下标
      var arr3=[1,5,6,99,52,663,22,66,552,6,622];
      var num=0;
      arr3.forEach(function(value,index){
          num+=v;
        console.log(index,value)
      })
      // 箭头函数
      arr3.forEach((value,index)=>{console.log(index,value)})

🌟arr.filter(回调函数) 过滤(根据条件筛选数组元素)

  • 根据回调函数的返回值进行元素筛选
    - 返回值是true,该元素会保留
    - 返回值是false,该元素跳过
  • 不修改原数组
  • 返回值是筛选之后的数组
var arr=[1,5,6,99,52,663,22,66,552,123,6,622];
var newArr =arr.filter(function(value(值),index(下标)){
return value>100;       //筛选arr数组中值大于100的元素;
})
console.log(newArr);
// 控制台输出
// (4) [663, 552, 123, 622]
var person = [
{name: "张三",age:20,sex: "男"},
{name: "李四",age:19,sex: "女"},
{name: "王五",age:22,sex: "男"},
{name: "赵六",age:21,sex: "女"}
];
var x =person.filter(function(value,index){
return value.age>20;           // 筛选出年龄大于20岁的学生
// return value.sex=="男";     //筛选出男同学
})
console.log(x);
// 箭头函数
arr.filter((value,index)=>{return 判断条件})

arr.map(回调函数) 映射 将数组中的所有数据按照条件改变,形成新数组 {重点}

  • 将回调函数每次的返回值,组成一个新的数组
  • 返回值是映射改变之后的数组
  • 不修改原数组
      var arr=[1,5,6,99,52,663,22,66,552,123,6,622];
      // var end=arr3.map(function(value,index){
      //     return value*2;        //将数组中的所有元素都乘以2返回
      // });
      // 箭头函数
      var end = arr.map((value,index)=>value*2);
      console.log(end);

🌟arr.some(回调函数) 判断 根据回调函数的判断条件来选择真假

  • 只要有一个回调函数返回值是true,最终some结果是true;


     var arr3=[1,5,6,99,52,663,22,66,552,123,6,622];
     var end=arr3.some(function(value,index){
     return value<500;
     });
     console.log(end);     //true

🌟arr.every(回调函数) 判断 根据回调函数的判断条件来选择真假(与some比较记忆)

  • 只要有一个回调函数返回值是false,最终every结果是false;
      var arr3=[1,5,6,99,52,663,22,66,552,123,6,622];
      var end=arr3.every(function(value,index){
      return value<500;
      });
      console.log(end);     //false

🌟arr.reverse() 数组倒序

  • 返回修改后的数组
  • 改变原数组
      var arr=[1,5,8,6,9,4,2,3];
      console.log(arr.reverse());     // (8) [3, 2, 4, 9, 6, 8, 5, 1]
      console.log(arr);               // (8) [3, 2, 4, 9, 6, 8, 5, 1]

🌟Array.from

方法用于将两类对象转为真正的数组:类似数组的对象和可遍历的对象(包括 ES6 新增的数据结构 Set 和 Map)

      var a={length:2,0:'aaa',1:'bbb'};  
      Array.from(a);        //['aaa','bbb']
      // 原理:Array.prototype.slice.call(a);
      var b={length:2};  
      Array.from(b);       //[undefined.undefined]

🌟Array.of

  • Array.of方法用于将一组值,转换为数组。
    总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
     Array.of() // []
     Array.of(undefined) // [undefined]
     Array.of(1) // [1]
     Array.of(1, 2) // [1, 2]

🌟arr.includes()

  • 用于检查数组是否包含某元素,包含返回true,否则返回false
  • 无法检测对象是否存在
  • 假如只想知道某个值是否在数组中而并不关心它的索引位置,建议使用
includes()


如果想获取一个值在数组中的位置,那么你只能使用 indexOf 方法。并且 includes() 可以识别NaN

      var arr = [1,2,{name:"张三"}]
      arr.includes(2)     // true
      arr.includes(4)     // false
      arr.includes({name:"张三"})     // false
  • 可接收俩个参数:
    要搜索的值,搜索的开始索引
      ['a', 'b', 'c', 'd'].includes('b')         // true
      ['a', 'b', 'c', 'd'].includes('b', 1)      // true
      ['a', 'b', 'c', 'd'].includes('b', 2)      // false

🌟 数组乱序

将数组顺序打乱:例如不重复随机选取数组内容,可将数组打乱后按顺序取出

arr.sort(()=>Math.random()-0.5) 数组乱序排列

var arr=[1,2,3,4,5,6,7,8,9];
arr.sort(()=>Math.random()-0.5)
console.log(arr);


🌟写在最后

更多JavaScript知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

目录
相关文章
|
24天前
|
JavaScript 前端开发 索引
JS遍历数组里数组下的对象,根据数组中对象的某些值,组合成新的数组对象
这篇文章介绍了如何在JavaScript中遍历数组里数组下的对象,并根据对象的某些属性值组合成一个新的数组对象。主要内容包括使用ES6的`for...of`循环来遍历数组对象,然后根据需要提取对象中的属性值,并将它们放入新的对象中,最终形成一个新的对象数组以供使用。
|
20天前
|
前端开发 JavaScript 开发者
【前端开发者的福音】彻底改变你编码习惯的神奇数组迭代技巧——从基础到进阶,解锁 JavaScript 数组迭代的N种姿势!
【8月更文挑战第23天】在Web前端开发中,数组是JavaScript中最常用的数据结构之一,掌握高效的数组迭代方法至关重要。本文详细介绍了多种数组迭代技巧:从基础的`for`循环到ES6的`for...of`循环,再到高阶方法如`forEach`、`map`、`filter`、`reduce`及`some`/`every`等。这些方法不仅能提高代码的可读性和维护性,还能有效优化程序性能。通过具体的示例代码,帮助开发者更好地理解和运用这些迭代技术。
24 0
|
9天前
|
JavaScript 前端开发
JavaScript基础知识-数组的遍历
关于JavaScript数组遍历基础知识的文章。
19 2
JavaScript基础知识-数组的遍历
|
9天前
|
JavaScript 前端开发
JavaScript基础知识-数组的练习
关于JavaScript基础知识中数组操作的练习,主要介绍了如何从一个包含Person对象的数组中过滤出成年人(年龄达到18岁及以上)并将他们放入一个新的数组中。
17 1
JavaScript基础知识-数组的练习
|
9天前
|
JavaScript 前端开发
JavaScript基础知识-数组的常用方法
关于JavaScript基础知识-数组的常用方法。
9 1
JavaScript基础知识-数组的常用方法
|
9天前
|
JavaScript 前端开发 索引
JavaScript基础知识-数组基于索引访问
关于JavaScript数组基于索引访问的基础知识介绍。
10 1
JavaScript基础知识-数组基于索引访问
|
9天前
|
JavaScript 前端开发
JavaScript基础知识-数组的定义方式
本文介绍了JavaScript中数组的多种定义方式。
9 1
JavaScript基础知识-数组的定义方式
|
4天前
|
存储 JavaScript 前端开发
JS中的数组有哪些常用操作函数和属性
【9月更文挑战第7天】JS中的数组有哪些常用操作函数和属性
8 1
|
13天前
|
JavaScript 前端开发 UED
JavaScript代码技巧大分享,在数组中去重元素
本文介绍了一系列实用的JavaScript函数,包括将内容复制到剪贴板、获取鼠标选中内容、打乱数组顺序、颜色值转换(RGBA与十六进制)、计算平均值、判断奇偶数、数组去重、检查空对象、反转字符串、计算日期间隔、首字母大写、生成随机字符串和随机数等,帮助提升网站的用户体验和功能丰富性。
19 4
|
14天前
|
JavaScript 前端开发 索引
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)