码迷,mamicode.com
首页 > 编程语言 > 详细

Js日常笔记之数组

时间:2017-12-27 11:58:21      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:判断   提取   index   开始   先进先出   比较   pos   默认   常见   

1、Array构造函数有一个很大的问题,就是不同的参数,会导致它的行为不一致,es6好像专门为此对数组有升级

因此,不建议使用new Array生成新数组,直接使用数组字面量[...]是更好的做法。

2、Array.isArray方法用来判断一个值是否为数组。它可以弥补typeof运算符的不足

var a = [1, 2, 3];

typeof a // "object"
Array.isArray(a) // true

3、push()和pop() 结合使用,就构成了“后进先出”的栈结构(stack)

push方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度,

pop方法用于删除数组的最后一个元素,并返回该元素。

4、join()方法以参数作为分隔符,将所有数组成员组成一个字符串返回。如果不提供参数,默认用逗号分隔。

如果数组成员是undefinednull或空位,会被转成空字符串

[undefined, null].join(‘#‘)
// ‘#‘

[‘a‘,, ‘b‘].join(‘-‘)
// ‘a--b‘

通过call方法,这个方法也可以用于字符串

Array.prototype.join.call(‘hello‘, ‘-‘)
// "h-e-l-l-o"

5、concat()方法用于多个数组的合并。返回一个新数组,原数组不变。

concat也可以接受其他类型的值作为参数。它们会作为新的元素,添加数组尾部。

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

// 等同于
[1, 2, 3].concat(4, [5, 6])
[1, 2, 3].concat([4], [5, 6])

注意:concat方法返回当前数组的一个浅拷贝,如果数组中存在复合类型数据(比如对象),原数据改变,数组元素也会随之改变;

let d={a:1}
a=a.concat(d)
//(8) [{…}, 2, "a", "b", true, 4, 5, {…}]

a[7]//{a: 1}
d.a=3//3
a[7]//{a: 3}

6、shift()和unshift()

shift方法用于删除数组的第一个元素,并返回该元素。pushshift结合使用,就构成了“先进先出”的队列结构(queue)

unshift方法用于在数组的第一个位置添加一个或多个元素,并返回添加新元素后的数组长度

var arr = [ ‘c‘, ‘d‘ ];
arr.unshift(‘a‘, ‘b‘) // 4
arr // [ ‘a‘, ‘b‘, ‘c‘, ‘d‘ ]

7、slice()和splice()

slice方法用于提取原数组的一部分,返回一个新数组,原数组不变。

// 格式
arr.slice(start_index, upto_index);

// 用法
var a = [‘a‘, ‘b‘, ‘c‘];

a.slice(0) // ["a", "b", "c"]
a.slice(1) // ["b", "c"]
a.slice(1, 2) // ["b"]
a.slice() // ["a", "b", "c"]

///如果slice方法的参数是负数,则表示倒数计算的位置。
var a = [‘a‘, ‘b‘, ‘c‘];
a.slice(-2) // ["b", "c"]
a.slice(-2, -1) // ["b"]

splice方法用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。

splice的第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。

var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘];
a.splice(4, 2, 1, 2) // ["e", "f"]//从e开始删除2个元素,再插入后面的参数
a // ["a", "b", "c", "d", 1, 2]

///起始位置如果是负数,就表示从倒数位置开始删除。
var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘];
a.splice(-4, 2) // ["c", "d"]

///常见用法,第二个参数给0,在指定位置插入新元素
var a = [1, 1, 1];
a.splice(1, 0, 2) // []
a // [1, 2, 1, 1]  

8、reverse()和sort(),之所以两个一起说,是因为二者都是封装了一个常用的遍历算法

reverse方法用于颠倒数组中元素的顺序,返回改变后的数组。

 sort方法对数组成员进行排序,默认是按照字典顺序排序。数值会被先转成字符串,再按照字典顺序进行比较

sort方法可以传入一个函数作为参数,表示按照自定义方法进行排序  

[
  { name: "张三", age: 30 },
  { name: "李四", age: 24 },
  { name: "王五", age: 28  }
].sort(function (o1, o2) {
  return o1.age - o2.age;//a>b则调换位置,实现从小到大的排序
})
// [
//   { name: "李四", age: 24 },
//   { name: "王五", age: 28  },
//   { name: "张三", age: 30 }
// ]

  

 

 

 


Js日常笔记之数组

标签:判断   提取   index   开始   先进先出   比较   pos   默认   常见   

原文地址:https://www.cnblogs.com/lyd2016/p/8124498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!