JS数组

创造数组

构造函数

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

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 创建数组 arr.length--- title: js正则表达式categories: javascriptda...
    angelwgh阅读 1,407评论 0 2
  • 数组的创建 数组的创建有三种方式:构造函数方式、字面量方式、ES6新增的Array.of()方法创建。 构造函数方...
    hnscdg阅读 768评论 0 2
  • 上一篇JS字符串的操作中,介绍了split方法可以将字符串转化为以某种形式分割的数组,然后可以对其采用数组的操作方...
    大春春阅读 5,263评论 1 5
  • JS对象 & JSON & JS数组操作 JSON 格式(JavaScript Object Notation 的...
    antimony阅读 881评论 0 2
  • JS 对象 对象由若干个键值对组成 对象的获取对象 company.name company['name'] 新增...
    Frank_Yi阅读 296评论 0 0