JS数组

作者: 董二干先生 | 来源:发表于2019-05-16 18:33 被阅读0次

创造数组

构造函数

在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则创建一个数组,参数作为初始化数据加到数组中。

var a1 = new Array(5);
console.log(a1.length);//5
 console.log(a1); //[] ,数组是空的

 var a2 = new Array(5,6);
 console.log(a2.length);//2
 console.log(a2); //[5,6]
字面量

使用字面量方式,无论传入几个参数,都会把参数当作初始化内容。

var a2 = [5,6];
console.log(a2.length);//2
console.log(a2); //[5,6]

添加/删除元素

数组的值可以通过自然数索引访问进行读写操作,也可以通过索引来添加或删除。

var a=[1,2,3];
a[3]=4;
console.log(a);//[1, 2, 3, 4]

数组也是对象,索引只是特殊的属性,所以我们可以使用删除对象属性的方法,使用delete 删除数组元素.

delete a[2];

push/pop

push向数组的末尾添加一个或更多元素,并返回新的长度。

var a = [1, 2, 3];
a.push(4);
console.log(a);//[1, 2, 3, 4]

pop删除并返回数组的最后一个元素。

var a = [1, 2, 3, 4];
a.pop(3);
console.log(a);//{1, 2, 3}

shift/unshift

shift删除并返回数组的第一个元素。

var a = [1, 2, 3, 4];
a.shift();
console.log(a);//[2, 3, 4]

unshift向数组的开头添加一个或更多元素,并返回新的长度。

var a = [1, 2, 3, 4];
a.unshift(0);
console.log(a);//[0, 1, 2, 3, 4]

splice

splice 删除元素,并向数组添加新元素。由三个参数:
1.开始索引
2.删除元素的位移
3.插入的新元素,当然也可以写多个
splice方法返回一个由删除元素组成的新数组,没有删除则返回空数组。

删除
var a = [1, 2, 3, 4, 5];
console.log(a.splice(1,3));//[2, 3, 4]
console.log(a.length);//2
console.log(a);//[1,5]
添加

只要方法第二个参数,也就是删除动作执行的次数设为0,第三个参数及以后填写要插入内容就splice就能执行插入操作,而如果第二个参数不为0则变成了先在该位置删除再插入,也就是替换效果。

var a = [1,2,3,4,5];
a.splice(1,0,9,99,999);
console.log(a.length); //8
console.log(a);//[1, 9, 99, 999, 2, 3, 4, 5]

join(char)

把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

var a = [1,2,3,4,5];
console.log(a.join(',')); //1,2,3,4,5
console.log(a.join(' ')); //1 2 3 4 5

slice(start,end)

slice方法用于返回数组中一个片段或子数组,如果只写一个参数返回参数到数组结束部分,如果参数出现负数,则从数组尾部计数。

var a = [1,2,3,4,5];
console.log(a); //[1, 2, 3, 4, 5]
console.log(a.slice(1,2));//2

concat(array)

concat方法用于拼接数组,a.concat(b)返回一个a和b共同组成的新数组,同样不会修改任何一个原始数组,也不会递归连接数组内部数组。

var a = [1,2,3,4,5];
var b = [6,7,8,9];
console.log(a.concat(b));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(a); //[1, 2, 3, 4, 5]
console.log(b); //[6, 7, 8, 9]

reverse()

方法用于将数组逆序,与之前不同的是它会修改原数组。

var a = [1,2,3,4,5];
a.reverse();
console.log(a); //[5, 4, 3, 2, 1]

sort

sort方法用于对数组进行排序,当没有参数的时候会按字母表升序排序。

var a=[5,4,3,2,1]
a.sort()
console.log(a) //[1, 2, 3, 4, 5]

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。
 var a = [7,8,9,10,11]

    a.sort(function(a,b){
      if (a < b ) {      
        return -1
      }
      if (a > b ) {
        return 1
      }
      return 0
    })
    console.log(a) //[7, 8, 9, 10, 11]

Array.isArray(obj)

这是Array对象的一个静态函数,用来判断一个对象是不是数组。

var a = [];
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false

.indexOf(element) / .lastIndexOf(element)

两个方法用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索。

var a = [1,2,3,3,2,1]
console.log(a.indexOf(2)) //1
console.log(a.lastIndexOf(2)) //4

.forEach(element, index, array)

遍历数组,参数为一个回调函数,回调函数有三个参数:
1.当前元素
2.当前元素索引值
3.整个数组

var a = new Array(1,2,3,4,5,6);

a.forEach(function(value,i,array){
    array[i]= value + 1;
});

console.log(a);//[2, 3, 4, 5, 6, 7]

.every(function(element, index, array)) / .some(function(element, index, array))

这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值

  • every是所有函数的每个回调函数都返回true的时候才会返回true,当遇到false的时候终止执行,返回false
  • some函数是“存在”有一个回调函数返回true的时候终止执行并返回true,否则返回false
var a = [1, 2, 3, 4, 5, 6]

console.log(a.every(function(value, i, arr){
return e < 5
}))

console.log(a.some(function(value,i,arr){
  return e > 4
}))

.map(function(element))

与forEach类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变。

var a = [1, 2, 3, 4, 5, 6];

console.log(a.map(function(value){
  return value * value;
}));  // [1, 4, 9, 16, 25, 36]

console.log(a); //[1, 2, 3, 4, 5, 6]

.filter(function(element))

返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加。
新数组只包含返回true的值,索引缺失的不包括,原数组保持不变。

var a = [1, 2, 3, 4, 5, 6];

console.log(a.filter(function(value){
  return value % 2 == 0;
})) // [2, 4, 6]

console.log(a) //[1, 2, 3, 4, 5, 6]

.reduce(function(v1, v2), value) / .reduceRight(function(v1, v2), value)

遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向,方法有两个参数:

  • 回调函数:把两个值合为一个,返回结果
  • value,一个初始值,可选
var a = [1, 2, 3, 4, 5, 6];
a.reduce(function(v1,v2){
    return v1+v2;
})//21

相关文章

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