1、数组

  特点:数组是可以存储有序集合的对象。

  声明: let arr = new Array();

      let arr=[];

  大多数情况下我们使用第二种。

 let fruits = ["apple","orange","plum"];
fruits[]="Pear";//对数组的更改 fruits[]="Lemon"; 数组元素增加 let arrLength = arr.lenght; //数组的长度

多维数组 

let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
alert(matrix[2,1]);//第三行第一个

2、数组的方法

  JavaScript中的数组既可以看成栈也可以看成队列

  作为队列有以下两种方法:

  push  在末端添加一个元素

  shift 取出队列最前端的一个元素,整个队列往前移

  作为栈有以下两个方法

  push 在末端添加一个元素,

  pop 在末端取出一个元素

  JavaScript 中的数组既可以用作队列,也可以用作栈。它们允许从前端/末端来添加/删除元素。

  这在计算机科学中叫做端队列

  

 //JavaScript在数组末端有两种操作方法
let arr = ["a"];
alert(a.pop());//移除a并显示a arr.push("b");
alert(arr);//b在数组末端添加元素 //在数组前端也有两种方法。
let arr = ["a","b"];
alert(arr.shift());//移除a并显示a
arr.unshift("c");//在数组的前端添加元素。 在数组末端的操作比在数组前端的操作速度要快,因为在数组末端操作不需要更改数据其他位置的索引。

  

 

splice

  删除数组元素,用delete删除,只能删除该元素的值,但是不能删除元素的索引。

  而splic 可以对数组进行添加、删除、和插入操作

  语法: arr.splic(index[,deleteCount,elem1,...,elemN])

  从index开始:删除deleteCount元素并在当前位置插入elem1,..,elemN。最后返回仪删除元素的数组。

  

 //删除
let arr = ["I", "study", "JavaScript"]; arr.splice(, ); // from index 1 remove 1 element alert( arr ); // ["I", "JavaScript"] //删除并替换 let arr = ["I", "study", "JavaScript", "right", "now"]; // remove 3 first elements and replace them with another
arr.splice(, , "Let's", "dance"); alert( arr ) // now ["Let's", "dance", "right", "now"] //将 deleteCount 设置为 0,splice 方法就能够插入元素而不用删除:
let arr = ["I", "study", "JavaScript"]; // from index 2
// delete 0
// then insert "complex" and "language"
arr.splice(, , "complex", "language"); alert( arr ); // "I", "study", "complex", "language", "JavaScript"

slice

  语法:arr.slice(start,end)  赋值数组中的元素

 let str = "test";
let arr = ["t", "e", "s", "t"]; alert( str.slice(, ) ); // es
alert( arr.slice(, ) ); // e,s alert( str.slice(-) ); // st
alert( arr.slice(-) ); // s,t

concat

  语法:arr.concat(arg1, arg2...)

 let arr = [,]

 alert(arr.concat([,]));//1,2,3,4

查询数组

  indexOf/lastIndexOf和includes

  这些方法和字符串的一样。

  arr.indexOf(item,from)  从索引from 查询item  ,如果找到返回索引,否则返回-1;

  arr.lastIndexOf(item,from)  从尾部开始查询

  arr.includes(item,from)  从索引from 查询iitem 如果找到返回true;

let arr = [,,false];

alert(arr.indexOf());//
alert(arr.indexOf(false));//
alert(arr.indexOf(null));//-1
alert(arr.includes());//true 在这里用的是 === 比较所以如果查询的false ,会精确必须是false,而不是零

find和findIndex

  语法:let result = arr.find(function(item,index,array){});

  let users =[

    {id:1,name:"john"},

    {id:2,name:"Pete"},

    {id:3,name:"Mary"}

  ];

  let user = users.find(item=>item.id==1);

  alert(user.name);//John

  filter

  和find 类似,但是该方法可以返回多个要素

  语法:let result = arr.filter(function(item,index,array){});

  let someUsers = users.filter(item=>item.id<3);

  alert(someUsers.length);//2

数组转换

  map

  语法: let result = arr.map(function,index,array){});

  对数组中的每一个元素进行判断,最终返回符合结果的数组。

 let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length)
alert(lengths); // 5,7,6

soft

  此方法默认是按照字符串排序的,如果不传参数,返回值不一定是自己想要的

  比较函数可以返回任何数字

 let arr = [ , ,  ];

 arr.sort(function(a, b) { return a - b; });

 alert(arr);  // 1, 2, 15

  更短的代码

 rr.sort( (a, b) => a - b );

reverse

  颠倒数组中元素的顺序

 let arr = [, , , , ];
arr.reverse(); alert( arr ); // 5,4,3,2,1

split 和join

  分割和合并元素

  

 //逗号分割
let names = 'Bilbo, Gandalf, Nazgul'; let arr = names.split(', '); for (let name of arr) {
alert( `A message to ${name}.` ); // A message to Bilbo (and other names)
}
//将一个数组用“;”连接成字符串
let arr = ['Bilbo', 'Gandalf', 'Nazgul']; let str = arr.join(';'); alert( str ); // Bilbo;Gandalf;Nazgul

reduce 和reduceRight

  语法:let value = arr.reduce(function(previousValue, item, index, arr) {
        // ...
     }, initial);

  previousValue — 是前一个函数调用的结果,第一次调用是初始化。

 let arr = [, , , , ];

 let result = arr.reduce((sum, current) => sum + current, );

 alert(result); //

  如果不初始化初始值则默认使用第一个元素作为初始值 

 let arr = [, , , , ];

 // 删除初始值
let result = arr.reduce((sum, current) => sum + current); alert( result ); //

  arr.reduceRight 也一样,但是遍历是从右到左。

迭代:forEach

  语法:arr.forEach(function(item, index, array) {
        // ... do something with item
      });

    

// 为每个元素调用 alert
1 ["Bilbo", "Gandalf", "Nazgul"].forEach(alert);

  

javaScript 基础知识汇总(七)的更多相关文章

  1. JavaScript基础知识汇总

    1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...

  2. javaScript 基础知识汇总(三)

    1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while  循环 let i =0; do { //循环体 }while( ...

  3. javaScript 基础知识汇总(六)

    1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number  boolean  symbol  null  undefined 对 ...

  4. javaScript 基础知识汇总(五)

    1.垃圾回收 JavaScript 的内存管理是自动的,不能强制执行或者阻止执行 可达性 JavaScript中主要的内存管理概念是可达性. 什么是可达性? 定义一个对象 let user = { n ...

  5. javaScript 基础知识汇总(二)

    1.运算符 术语或者叫法:一元运算符.二元运算符.运算元(参数) let x=0; x=5+2; //5和2为运算元,“+” 为二元运算符: x=-x; //"-" 为一元运算符 ...

  6. javascript 基础知识汇总(一)

    1.<script> 标签 1) 可以通过<script> 标签将javaScript 代码添加到页面中 (type 和language 属性不是必须的) 2)外部的脚本可以通 ...

  7. JavaScript 基础知识汇总目录

    一.标签.代码结构.现代模式.变量.数据类型.类型转换 GO 二.运算符.值的比较.交互.条件运算符.逻辑运算符 GO 三.循环 while 和 for .switch语句.函数.函数表达式和箭头函数 ...

  8. javaScript 基础知识汇总 (十三)

    1.Class 在JavaScript中 calss即类是一种函数 基本语法 class Myclass{ constructor(){} method1(){} method2(){} method ...

  9. javaScript 基础知识汇总 (十)

    1.New Function 语法:let func = new Function ([arg1[, arg2[, ...argN]],] functionBody) //无参数示例: let say ...

随机推荐

  1. SHELL用法一(基本概念)

    1. SHELL 编程概念入门 1)一个完整 Linux 操作系统(Linux 内核),默认用户是不能直接操作 Linux 内核,需要借助第三方的程序或者软件去操作,例如桌面工具.命令行工具(SHEL ...

  2. Jquery和js实现cookie操作手机浮层广告;附加:js获取、添加、删除cookie

    1.jquery cookie包实现手机上的浮层广告 <span style="font-size:18px;">$(document).ready(function( ...

  3. JavaScript对象的几种创建方式与优缺点

    JavaScript中常见的几种创建对象的方式有:Object构造函数模式.对象字面量模式.工厂模式.自定义构造函数模式.构造函数加原型组合模式:他们各自有各自的优缺点和使用场景. 1. Object ...

  4. centos7开启ntp并同步时间到指定时区

    前提:近期公司都是使用的直接对外的云服务器,在登上服务器后用date命令查看新服务器的时间,发现并不是标准时间,于是需要做时间同步.我这里讲的是能连接外网的情况下,在服务器不多的情况下是否此方法,大型 ...

  5. Ubuntu18.04制作本地源

    Ubuntu 18.04 制作本地源 1. 在可联网的Ubuntu18.04上制作源 创建目录 mkdir /opt/debs 最好在目标电脑上创建相同的目录,以免 apt-get install 时 ...

  6. View 属性

    关于 View 设置属性的方式: JavaxmlstyledefStyleAttrdefStyleResTheme 关于 defStyleRes 的使用,和在 xml 中声明 style=" ...

  7. C++走向远洋——21(项目一,三角形,类)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:sanjiaoxing.cpp * 作者:常轩 * 微信公众号: ...

  8. 关于js传送json到.net后台处理

    这里的内容好像跟标题不太符合,应该是如何实现将请求得到的结果作为另一个请求的请求参数,方法就是使用json处理配合全局变量进行处理 今天做项目遇到以下情景,页面请求获得一个list数据,然后要将得到的 ...

  9. 压力测试(三)-自定义变量和CSV可变参数实操

    1.Jmeter用户自定义变量实战 简介:什么是用户自定义变量,怎样使用 为什么使用:很多变量在全局中都有使用,或者测试数据更改,可以在一处定义,四处使用 比如服务器地址 1.线程组->add ...

  10. pika使用报错queue_declare() missing 1 required positional argument: 'queue'

    报错如下截图,使用pika的版本太高导致,重新安装pika==0.10.0解决.