浅谈ECMAScript 中的Array类型(2)

let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ] console.log(array.slice(0, 3)) //[ { id: 5, name: 'jk' },{ id: 2, name: 'jc' },{ id: 3, name: 'jg' } ] //字符串 let str = 'this1 is slice' console.log(str.slice(0,5))//this1

截取元素用的,但是原数组不会改变!

07、Array.prototype.splice()

splice() 方法用于添加、移除、删除数组的元素,修改后的元素以数组形式返回。

第一个参数为修改开始的位置

第二个参数为删除的个数

第三个参数为插入的参数

粟子:

let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ]; let arr = {id: 7, name: 'yy'} console.log(array.splice(1,1, arr));//[ { id: 2, name: 'jc' } ] console.log(array);// [ { id: 5, name: 'jk' },{ id: 7, name: 'yy' }, { id: 3, name: 'jg' }, { id: 4, name: 'jp' },{ id: 1, name: 'jq' },{ id: 6, name: 'jr' } ]

splice() 方法直接返回修改的内容,第一个log返回的就是删除的元素,如果第二参数为0或者为负数的时候则会返回一个空的数组,第二个log是改变后的数组。该方法会将原数组修改!

08、Array.prototype.shift()

shift() 方法会将数组的第一个元素进行删除,然后返回删除的元素(如果数组为空将会返回undefined),该方法会修改数组的长度 粟子:

let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ] console.log(1,array.shift())//1 { id: 5, name: 'jk' } console.log(2,array)//2 [ { id: 2, name: 'jc' },{ id: 3, name: 'jg' },{ id: 4, name: 'jp' },{ id: 1, name: 'jq' },{ id: 6, name: 'jr' } ]

09、Array.prototype.unshift()

unshift() 该方法则是在数组的开头添加一个或者多个元素

粟子:

let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ] let arr = { id: 2, name: 'yy' } console.log(1,array.unshift(arr))//7 console.log(2,array)//2 [ { id: 2, name: 'yy' },{ id: 5, name: 'jk' },{ id: 2, name: 'jc' },{ id: 3, name: 'jg' }{ id: 4, name: 'jp' },{ id: 1, name: 'jq' },{ id: 6, name: 'jr' } ]

10、Array.prototype.reverse()

reverse() 方法用翻转数组元素的位置,然后返回该数组

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

11、Array.prototype.indexOf()

indexOf() 方法用于给定的元素然后从数组开头查找数组,如果存在则返回该元素存在数组的下标,不存在则返回-1

简单的粟子:

let array = [1,2,3,4,5,6,7,8,9] console.log(array.indexOf(3))//2

第二个粟子:(简单的去重)

let array = [1,2,3,4,5,1,2,6,8,3,8,9] function arr(arr) { if(arr.length === 0 ) return let n = []; for(let i = 0; i<arr.length; i++) { if(n.indexOf(arr[i]) === -1) { n.push(arr[i]) } } return n } console.log(arr(array))//[ 1, 2, 3, 4, 5, 6, 8, 9 ]

12、Array.prototype.lastIndexOf()

lastIndexOf() 方法从数组的末端开始按给定的元素进行查找,查找到则返回所在的下标,不存在则返回-1;

粟子:

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

迭代

1、Array.prototype.forEach()

forEach() 方法对数组中的每个元素执行一次所写的回调函数(注意,一旦开始循环中途无法跳出循环)

回调函数接收三个参数

数组当前项值

数组当前项的下标

当前数组 简单的粟子:

var words = ['one', 'two', 'three', 'four']; words.forEach((item, index) =>{ if(item === 'two') { words.splice(index, 1) } }); console.log(words)//[ 'one', 'three', 'four' ]

2、Array.prototype.map()

map() 方法会将该方法迭代后返回的新数组

简单的粟子:

let arr = [1,2,3,4,5,6] let arrs = arr.map(item => item + 10) console.log(arrs)//[ 11, 12, 13, 14, 15, 16 ]

经典的粟子:

let a = [1,2,3].map(parseInt) a?

a等于多少呢,有的答案可能是123,有的答案又可能是别的,而且这是一个经典的面试题,是不是刚刚看的时候觉得特别简单一下子就给出了答案了呢!

浅谈ECMAScript 中的Array类型

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2424ee2eaa6be8be9096215e79abcae1.html