欢迎您光临【澳门新葡亰】官方网站!

JS中的内置对象,js完成交换数组成分地点的章程总汇

时间:2020-02-07 08:15

时间: 2018-09-19阅读: 10000标签: array

JS中的数组

1、数组的基本概念

数组是在内存空间中连续存储的一组有序数据的集合。

元素在数组中的顺序,称为下标,可以使用下标访问数组的每个元素。

2、如何声明一个数组

①使用字面量声明:var arr = [];

  在JS中同一数组,可以存储各种数据类型

  例如:var arr = [1,"jianghao",true,{},null,func];

②使用new关键字声明:var arr = new Array(参数);

参数可以是:

  参数省略,表示创建一个空数组;

  参数为一个整数,表示声明一个length为指定长度的数组,但是这个length可以随时追加。

  参数为逗号分隔的多个数值,表示数组的多个值。

  new array(1,2,3) == [1,2,3]

3、数组中元素的读写/增删

①读写:通过下标访问元素。下标从零开始 arr[1] = "haha";

②增删:

  使用delete关键字,删除数组的某一个值,删除之后,数组的长度不变,对应的位置变成Undefined。eg:delete arr[1];

  arr.pop();删除数组中的最后一个值,相当于arr.length -=1;区别前者长度减一。

  arr.shift();删除数组的第一个值。

  arr.unshift(值);在数组的第0个位置新增一个值。

  arr.push(值);在数组的最后一个位置新增一个值。

  直接访问数组没达到的下标,可以动态追加。

  arr[100] = 1;中间如果有空余下标,将存入Undefined。

 

4、数组中的其他方法

①var str = arr.join("-");将数组用指定分隔符连接为字符串,当参数为空时,默认用逗号分隔。

②concat();[原数组不会改变]将数组,与两个,多个数组的值连接为新数组。

  copcat连接时,如果有二维数组,则至多能拆一层[]

  [1,2].concat([3,4],[5,6]) -> [1,2,3,4,5,6]

  [1,2].concat([3,4,[5,6]]) -> [1,2,3,4,[5,6]]

③ push();数组最后增加一个 unshift();数组开头增加一个。返回新数组的长度

     pop();数组最后删除一个,删 除一个。返回被删除的值

  [上述方法,均会改变原数组]

④reverse();[原数组被改变]将数组翻转,倒叙输出

⑤slice(begin,end);[原数组不会改变]截取数组中的某一部分,并返回截取的新数组

    eg:var arr = arr.slice(2,4);

  传入一个参数,表示开始区间,默认将截取数组最后

  传入两个参数,表示卡是和结束的下标,左闭右开[begin,end);

  两个参数可以是负数,表示从右边开始数,最后一个值是-1

⑥sort();[原数组会改变]将数组进行排列

  默认情况下,会按照每个元素首字母的ASCII值进行排序;

  [3,1,5,12].sort() -> [1,12,3,5]

  可以传入一个比较函数,手动指定排序的函数算法

  函数将默认接收两个值a,b如果函数返回值>0,则证明a>b

    arr.sort(function(a,b){

      return a-b;//升序排列

      return b-a;//降序排列

    });

⑦indexOf(value,index);返回数组中第一个value值所在的下标,如果没有找到返回-1

   lasrIndexOf(value,index);返回数组中最后一个value值所在的下标,如果没有找到返回-1

  如果没有指定index,则表示全数组查找value;

  如果指定了index,则表示从index开始,向后查找value。

⑧forEach();专门用于循环遍历数组,接收一个回调函数,回调函数接收两个参数,第一个参数为该组的每一项值,第二个参数为下标。

  [IE8之前,不支持此函数]

  arr.forEach(function(itme,index){

    console.log(itme);

  });

⑨map();数组映射,使用方式与fcrEach()相同,不同是map可以有return返回值,表示将原数组的每个值进行操作后,返回一个新数组。

[IE8之前,不支持此函数]

  var arr1 = arr.map(function(itme,index){

    console.log(itme);

    return itme +1;

  });

⑩splice(index,howmany,item); 插入、删除或替换数组的元素

  splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

  index参数:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

  howmany参数:必需。要删除的项目数量。如果设置为 0,则不会删除项目。

  item1, ..., itemX参数:可选。向数组添加的新项目。

注意:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。

5、二维数组与稀疏数组

①二维数组:数组中的值,依然是一个数组形式

  eg:var arrs = [[1,2,5],[3,4,6]];//相当于两行三列

  读取二维数组:arr[行号][列号]

②稀疏数组:数组中的索引是不连续的。(length要比数组中实际的元素个数大)

 

6、基本数据类型&引用数据类型

①基本数据类型:赋值时,是将原变量中的值,赋值给另一个变量,赋值完成后,两个变量相互独立修改其中一个值,另一个不会变化。

②引用数据类型:赋值时,是将原变量在内存中的地址,赋值给另一个变量,赋值完成后,两个变量中存储的是同一个内存地址,访问的是同一份数据,其中一个改变另一个也会发生改变。

③数值型、字符串、布尔型等变量属于基本数据类型

   数组、对象属于引用数据类型

交换数组元素位置是开发项目中经常用到的场景,总结下用过的几种方式。

Boolean 类

两种声明方式:

  可以使用字面量方式声明一个单纯的变量;用typeof检测为Boolean类型
  也可以使用new Boolean();声明一个Boolean类型的对象,用typeof检测为Object类型

图片 1

第三方变量

Number 类

①Number.MAX_VALUE 返回Number类可表示的最大值
②Number.MIN_VALUE 返回Number类可表示的最小值
③.toString();将数值类型转换为字符串类型
  eg:var str = num1.toString();
④.toLocaleString();将数值按照本地格式顺序转换为字符串,一般从右开始,三个一组加逗号分隔;
  eg:var str = num1.toLocaleString();
⑤.toFixed(n);将数字保留n为小数,并转为字符串格式
  eg:var str = num1.toFixed(2);
⑥.toPrecision(n);将数字格式化为指定长度,n表示不含小数点位数长度,如果n<原数字长度,则用科学计数法表示。如果n>原数字长度,则小数点后补0;
  eg:var str = num1.toPrecision(2);
⑦.valueOf();返回Number对象的基本数字值;

图片 2

最基础的方式,创建一个变量作为中转。

String 类

 

1、 属性:str.length 返回字符串的长度,字符数

  字符串支持类似数组的下标访问:str[0];
2、方法:
  .toLowerCase();将字符串所有字符转成小写
  .toUpperCase();将字符串所有字符转成大写
  .charAt(n);截取数组的第n个字符,相当有str[n]
  .indexOf("str",index);从index位置开始,查找子串在字符串的位置 ,如果没有找到返回-1,其他从数组的indexOf方法;
  .lastIndexOf();同数组
  .substring(bengin,end);从字符串中截取子串

    只传入一个参数,表示从begin开始到最后;

    传入两个参数,表示begin到end的区间,左闭右开
  .split("分隔符");将字符串以指定分隔符分隔,存入数组中,传入空""表示将字符串的每一个字符分开放入数组;
  .replace("old","new");将字符串中的第一个old替换为new。

    第一个参数,可以是普通字符串,也可以是正则表达式;

    如果是普通的字符串,则只替换第一个old,如果是正则表达式,则可以根据表达式的写法要求,进行替换。

 

let temp = array[index1];array[index1] = array[index2];array[index2] = temp;

Date 日期类

1、new Date();返回当前最新时间
  new Date("2017,8,23,12:34:20");返回指定的时间

图片 3

2、常用方法:
  .getFullYear();获取4位年份
  .getMonth();获取月份0—11
  .getDate();获取一个月中的第几天 1-31
  .getDay();获取一周中的第几天0-6,0表示星期天
  .getHours();获取小时
  .getMinutes();获取分钟
  .getSeconds();获取秒

 

splice方法

自定义对象

1、基本概念:

①对象:对象是拥有一系列无序属性和方法的集合。

②键值对:对象中的数据,用键值对的形式存在,对象的每个属性和方法,都对应着一个键名,以键取值。

③属性:描述对象特征的一系列变量,称为属性。[对象中的变量]

④方法:描述对象行为的一系列函数,称为方法。[对象中的函数]

2、对象的声明:
①使用字面量声明:
  var orj = {
    key1 : value1,
    key2 : value2,

    func1 : function(){}

  }

>>>对象中的数据是以键值对的形式存储,键与值之间用 : 分隔。
多个键值对之间用 , 分隔。

>>>对象中的键,可以是除了数组/对象以外的任何数据类型。但是一般我们只用普通变量名

>>>对象中的值,可以是任何数据类型,包括数组和对象。

②使用new关键字声明:
  var obj = new Object();
  obj.key1 = value1;

  obj.func1 = function(){};

3、对象中属性和方法的读写:
①.运算符:
  对象内部:this.属性 this.方法();
  对象外部:对象名.属性 对象名.方法();

②通过["key"]调用:对象名.["属性名"] 对象名.["方法名"]();

>>>如果键中包含特殊符号,只能使用第②中方法

>>>对象中,直接写变量名,默认为调用全局变量,如果需要调用对象自身的属性或者方法,需要使用对象名.属性,或者this.属性。
person.age this.age 都可以,推荐使用this关键字
③删除对象的属性和方法:delete 对象名.属性名/方法名
  delete person.name;

 

 

 

 

 

 

 

 

splice() 方法用于插入、删除或替换数组的元素。如果是删除时,会返回被删除的元素数组。参数如下:

可使用splice方法来交换数组的位置,如下:

array.splice(index2,1,...array.splice(index1, 1 , array[index2]));

array.splice(index1, 1 , array[index2])会将index1位置上的元素替换为index2位置的元素,同时返回[array[index1]](注意此时返回的是数组,所以在代码中加入了扩展运算符...将数组转为参数序列)。再利用同样的方式将index2位置上的元素替换为被删除的原数组的array[index1]的值。完成交换。

解构赋值

利用ES6的解构赋值能更加便捷的进行元素交换

[array[index1],array[index2]] = [array[index2],array[index1]];

等号的左右两边模式相同,就会将右边的值赋给左边的变量。

来源:

上一篇:js实现统计一个字符串中出现最多的字母的方法总汇,利用split方法计算字符串中出现字母最多的次数
下一篇:JS浮点数陷阱及解法,js之反转整数算法